SSH远程连接Linux服务器,从入门到精通

03-15 1207阅读
SSH(Secure Shell)是一种加密的网络协议,用于安全地远程连接和管理Linux服务器,通过SSH,用户可以在本地计算机上执行远程服务器的命令,进行文件传输和系统管理,入门阶段,用户需要掌握基本的SSH命令,如ssh username@hostname,以及如何生成和使用SSH密钥对进行免密登录,进阶阶段,用户可以学习如何配置SSH服务端,如修改默认端口、禁用密码登录、设置访问控制等,以提高安全性,精通阶段,用户应熟悉SSH隧道、端口转发、多跳连接等高级功能,以应对复杂的网络环境和安全需求,掌握SSH不仅能提高工作效率,还能有效保护服务器免受未经授权的访问。

SSH简介

SSH是一种加密的网络协议,用于在不安全的网络中安全地传输数据,它最初由芬兰程序员Tatu Ylönen于1995年开发,旨在替代不安全的Telnet和rsh等协议,SSH通过加密通信内容,防止数据被窃听或篡改,同时提供了身份验证机制,确保只有授权用户能够访问服务器。

SSH远程连接Linux服务器,从入门到精通 第1张
(图片来源网络,侵删)

SSH的核心功能包括:

  1. 远程登录:用户可以通过SSH连接到远程服务器并执行命令。
  2. 文件传输:通过SCP(Secure Copy Protocol)或SFTP(SSH File Transfer Protocol)实现安全的文件传输。
  3. 端口转发:通过SSH隧道实现安全的网络通信。

SSH的基本使用

安装SSH客户端

在大多数Linux发行版中,SSH客户端(openssh-client)已经预装,如果没有安装,可以通过以下命令安装:

sudo apt-get install openssh-client  # Debian/Ubuntu
sudo yum install openssh-clients    # CentOS/RHEL

在Windows系统中,可以使用PuTTY、MobaXterm等工具,或者通过Windows 10及以上版本内置的OpenSSH客户端。

连接到远程服务器

使用SSH连接远程服务器的基本命令格式如下:

SSH远程连接Linux服务器,从入门到精通 第2张
(图片来源网络,侵删)
ssh username@hostname
  • username:远程服务器的用户名。
  • hostname:远程服务器的IP地址或域名。

连接到IP为168.1.100的服务器,用户名为admin

ssh admin@192.168.1.100

首次连接时,系统会提示是否信任远程服务器的指纹(fingerprint),输入yes后继续,如果指纹匹配,后续连接将不再提示。

使用密钥认证

为了提高安全性,建议使用SSH密钥认证代替密码认证,以下是生成和使用SSH密钥的步骤:

  1. 生成密钥对
    在本地机器上生成公钥和私钥:

    SSH远程连接Linux服务器,从入门到精通 第3张
    (图片来源网络,侵删)
    ssh-keygen -t rsa -b 4096

    默认情况下,密钥会保存在~/.ssh/id_rsa(私钥)和~/.ssh/id_rsa.pub(公钥)中。

  2. 上传公钥到服务器
    将公钥复制到远程服务器的~/.ssh/authorized_keys文件中:

    ssh-copy-id username@hostname

    或者手动复制公钥内容并粘贴到服务器的authorized_keys文件中。

  3. 禁用密码认证
    为了提高安全性,可以在服务器的SSH配置文件中禁用密码认证:
    编辑/etc/ssh/sshd_config文件,找到以下行并修改:

    PasswordAuthentication no

    然后重启SSH服务:

    sudo systemctl restart sshd

SSH的高级功能

端口转发

SSH支持本地端口转发和远程端口转发,用于在加密隧道中传输数据。

  • 本地端口转发:将本地端口映射到远程服务器的端口。
    将本地的8080端口转发到远程服务器的80端口:

    ssh -L 8080:localhost:80 username@hostname

    访问本地的http://localhost:8080将等同于访问远程服务器的http://localhost:80

  • 远程端口转发:将远程服务器的端口映射到本地端口。
    将远程服务器的8080端口转发到本地的80端口:

    ssh -R 8080:localhost:80 username@hostname

使用SSH配置文件

通过编辑~/.ssh/config文件,可以简化SSH连接命令。

Host myserver
    HostName 192.168.1.100
    User admin
    IdentityFile ~/.ssh/id_rsa

之后,只需输入ssh myserver即可连接到服务器。

多路复用(Multiplexing)

SSH支持多路复用功能,允许在同一个连接中执行多个会话,从而减少连接开销,在~/.ssh/config中添加以下配置:

Host *
    ControlMaster auto
    ControlPath /tmp/ssh_mux_%h_%p_%r
    ControlPersist 4h

使用SSH代理转发

SSH代理转发允许在连接到远程服务器后,继续使用本地SSH密钥访问其他服务器,启用代理转发:

ssh -A username@hostname

或者在~/.ssh/config中配置:

Host myserver
    ForwardAgent yes

SSH的安全最佳实践

  1. 禁用root登录
    /etc/ssh/sshd_config中设置:

    PermitRootLogin no
  2. 限制用户访问
    使用AllowUsersAllowGroups限制可以登录的用户或组:

    AllowUsers admin user1
    AllowGroups ssh-users
  3. 更改默认端口
    将SSH服务的默认端口(22)更改为其他端口,以减少暴力破解的风险:

    Port 2222
  4. 启用Fail2Ban
    Fail2Ban可以自动封禁多次尝试失败的IP地址,防止暴力破解:

    sudo apt-get install fail2ban  # Debian/Ubuntu
    sudo yum install fail2ban      # CentOS/RHEL
  5. 定期更新SSH软件
    确保SSH客户端和服务器软件保持最新,以修复已知漏洞。


常见问题与解决方案

  1. 连接超时
    检查网络连接和防火墙设置,确保SSH端口(默认22)未被阻塞。

  2. 权限问题
    确保~/.ssh目录的权限为700,authorized_keys文件的权限为600:

    chmod 700 ~/.ssh
    chmod 600 ~/.ssh/authorized_keys
  3. 密钥认证失败
    检查私钥和公钥是否匹配,并确保authorized_keys文件中没有多余的空格或换行符。


SSH是管理Linux服务器的核心工具,掌握其使用方法对于系统管理员和开发人员至关重要,通过本文的介绍,您应该已经了解了SSH的基本操作、高级功能以及安全最佳实践,无论是日常运维还是复杂网络环境的配置,SSH都能为您提供强大的支持,希望本文能帮助您更好地利用SSH远程连接Linux服务器,提升工作效率和安全性。


字数统计:1768字


    免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

    目录[+]