SSH(Secure Shell)是一种加密的网络传输协议,主要用于远程登录和管理服务器,能够在不安全的网络中为用户提供安全的远程登录和其他安全网络服务,与传统的Telnet、FTP等协议相比,SSH通过加密传输数据、身份验证等机制,有效防止了信息泄露、密码窃听等安全风险,成为服务器运维中不可或缺的工具。

SSH连接服务器的步骤
准备工作
确保本地设备已安装SSH客户端(Linux、macOS系统默认已安装,Windows系统可通过OpenSSH、PuTTY等工具实现);服务器端已开启SSH服务(默认端口为22,可通过systemctl status sshd检查服务状态,若未安装,在Linux系统中可通过sudo apt install openssh-server(Ubuntu/Debian)或sudo yum install openssh-server(CentOS/RHEL)安装)。
密钥认证(推荐方式)
密钥认证比密码认证更安全,可避免暴力破解风险。
- 生成密钥对:在本地终端执行
ssh-keygen -t rsa -b 4096,按提示保存密钥(默认路径为~/.ssh/id_rsa私钥和~/.ssh/id_rsa.pub公钥)。 - 上传公钥到服务器:使用
ssh-copy-id user@server_ip命令(需输入服务器密码),或手动将公钥内容追加到服务器~/.ssh/authorized_keys文件中(cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys)。 - 连接测试:执行
ssh user@server_ip,若配置成功,可直接登录无需密码。
密码认证(临时或备用方式)
若服务器未配置密钥认证,可通过密码直接连接:ssh user@server_ip,输入服务器用户密码即可登录,首次连接时,系统会提示服务器的主机密钥未知,输入yes确认后建立连接。

常用SSH连接参数
SSH命令支持多种参数,可根据需求灵活调整,以下是常用参数及作用:
| 参数 | 作用 | 示例 |
|---|---|---|
-p |
指定SSH服务端口(默认22) | ssh -p 2222 user@server_ip |
-i |
指定私钥文件路径 | ssh -i ~/.ssh/custom_key user@server_ip |
-C |
启用数据压缩(适用于低速网络) | ssh -C user@server_ip |
-N |
不执行远程命令(常用于端口转发) | ssh -N -L 8080:localhost:80 user@server_ip |
-f |
后台运行SSH连接(常与-N配合) |
ssh -f -N -L 8080:localhost:80 user@server_ip |
-v |
详细模式输出(排查连接问题时使用) | ssh -v user@server_ip |
SSH安全配置建议
为确保服务器安全,建议对SSH服务进行以下配置:
- 修改默认端口:编辑
/etc/ssh/sshd_config文件,将Port 22修改为其他高位端口(如2222),重启SSH服务(sudo systemctl restart sshd)。 - 禁用root直接登录:在
sshd_config中设置PermitRootLogin no,通过普通用户登录后切换至root。 - 限制登录用户:添加
AllowUsers user1 user2或AllowGroups ssh_group,仅允许指定用户或用户组登录。 - 启用失败锁定:安装
fail2ban工具,配置规则自动封禁频繁失败IP,防止暴力破解。 - 定期更新SSH:保持系统及OpenSSH软件包为最新版本,修复已知漏洞。
相关问答FAQs
Q1: SSH连接时提示“Permission denied (publickey,password)”怎么办?
A: 通常是由于认证方式配置问题导致,首先检查服务器~/.ssh/authorized_keys文件权限是否为600(chmod 600 ~/.ssh/authorized_keys),所属用户是否正确;若使用密码认证,确认用户密码输入是否正确,或检查/etc/ssh/sshd_config中PasswordAuthentication是否为yes(默认可能被注释,需取消注释并设置为yes后重启SSH服务)。

Q2: 如何优化SSH连接速度,解决首次连接卡顿?
A: 首次连接卡顿多为DNS解析或GSSAPI认证导致,可通过以下方式优化:1. 编辑/etc/ssh/ssh_config,添加UseDNS no和GSSAPIAuthentication no;2. 在服务器/etc/ssh/sshd_config中同样设置上述两项并重启SSH服务;3. 若服务器IP频繁变化,可本地~/.ssh/config中为服务器配置Host别名并指定IP,减少DNS查询时间。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/39368.html