在Linux系统中,登录其他服务器是一项基础且重要的操作,无论是系统管理员进行日常运维,还是开发者部署应用,都离不开这一技能,本文将详细介绍Linux环境下登录其他服务器的多种方法、配置技巧及注意事项,帮助读者全面掌握相关操作。

基础登录方法:SSH命令行登录
SSH(Secure Shell)是目前最主流的远程服务器登录协议,它通过加密传输确保数据安全,替代了早期不安全的Telnet和rsh协议,在Linux终端中,使用SSH登录其他服务器的基本命令格式为:ssh [用户名]@[服务器IP或域名],要登录IP为192.168.1.100的服务器,用户名为root,则命令为ssh root@192.168.1.100,首次登录时,系统会提示服务器的SSH密钥指纹,用户需确认“yes”以建立信任关系,之后即可输入密码完成登录。
为了提高登录效率,可以通过SSH配置文件(通常位于~/.ssh/config)设置别名,为服务器192.168.1.100配置别名为“server1”,添加以下内容:
Host server1
HostName 192.168.1.100
User root
Port 22
配置后,只需输入ssh server1即可快速登录,无需每次输入完整IP和用户名,SSH默认使用22端口,若服务器修改了端口,需通过-p参数指定,如ssh -p 2222 root@192.168.1.100。
免密登录配置:SSH密钥认证
频繁输入密码不仅效率低下,还存在安全风险,通过SSH密钥对实现免密登录是更优选择,其原理是:客户端生成一对公钥和私钥,将公钥上传至服务器,私钥保留在本地,登录时,服务器通过公钥验证客户端身份,无需输入密码。

配置步骤如下:
- 生成密钥对:在客户端执行
ssh-keygen -t rsa -b 4096,一路回车即可在~/.ssh/目录下生成id_rsa(私钥)和id_rsa.pub(公钥)文件。 - 上传公钥至服务器:使用
ssh-copy-id [用户名]@[服务器IP]命令,该命令会自动将公钥追加到服务器的~/.ssh/authorized_keys文件中。ssh-copy-id root@192.168.1.100。 - 测试免密登录:再次执行
ssh server1(或完整命令),若无需输入密码即可登录,则配置成功。
若服务器未安装ssh-copy-id命令,可手动操作:将本地公钥文件内容(cat ~/.ssh/id_rsa.pub)粘贴到服务器的~/.ssh/authorized_keys文件中,并确保该文件权限为600(chmod 600 ~/.ssh/authorized_keys),目录权限为700(chmod 700 ~/.ssh/)。
高级登录技巧:SSH代理与端口转发
在实际应用中,可能需要通过跳板机登录内网服务器,或进行端口转发以访问服务器的特定服务,SSH提供了灵活的解决方案。
SSH代理转发
当需要通过中间服务器(跳板机)访问内网服务器时,可使用SSH代理转发,先登录跳板机gateway,再通过跳板机登录内网服务器inner-server,命令为:ssh -J root@gateway root@inner-server,该参数会自动建立SSH代理链,简化操作。

本地端口转发
若需访问服务器上的内网服务(如数据库),可通过本地端口转发将服务器的端口映射到本地,将服务器192.168.1.100的3306端口映射到本地的3307端口:ssh -L 3307:localhost:3306 root@192.168.1.100,配置后,本地访问localhost:3307即可连接到服务器的数据库。
动态端口转发(SOCKS代理)
动态端口转发可创建一个SOCKS代理,用于访问服务器内网的任意服务。ssh -D 1080 root@192.168.1.100会在本地启动1080端口的SOCKS代理,配置浏览器或工具使用该代理后,即可通过服务器访问内网资源。
安全加固与最佳实践
为确保SSH登录安全,需采取以下措施:
- 禁用密码登录:编辑服务器
/etc/ssh/sshd_config文件,将PasswordAuthentication no取消注释并保存,重启SSH服务(systemctl restart sshd),强制使用密钥登录。 - 修改默认端口:将
Port 22修改为其他高位端口(如2222),减少自动化攻击扫描。 - 限制登录用户:在
sshd_config中添加AllowUsers user1 user2,仅允许指定用户登录。 - 使用防火墙:通过iptables或firewalld限制SSH端口的访问IP,仅允许信任网络访问。
- 定期更新密钥:定期更换SSH密钥对,避免密钥泄露风险。
常见问题与解决方案
-
登录提示“Permission denied (publickey,password)”
原因:可能是服务器authorized_keys文件权限错误,或SSH服务未启用密钥认证。
解决:检查文件权限(~/.ssh/authorized_keys应为600,~/.ssh/目录应为700),确认服务器sshd_config中PubkeyAuthentication yes已配置。 -
SSH连接超时或断开
原因:网络不稳定或服务器SSH配置超时时间过短。
解决:在客户端SSH命令中添加-o ServerAliveInterval=60 -o ServerAliveCountMax=3参数,或修改服务器sshd_config中的ClientAliveInterval和ClientAliveCountMax值。
相关问答FAQs
Q1: 如何在SSH登录时执行远程命令而不进入交互式shell?
A1: 可在SSH命令后直接添加要执行的命令,例如ssh root@192.168.1.100 "ls -l /tmp",该命令会登录服务器后执行ls -l /tmp并输出结果,随后自动断开连接,适合自动化脚本中批量执行操作。
Q2: SSH密钥丢失后如何恢复登录权限?
A2: 若客户端私钥丢失,需重新生成密钥对并将新公钥上传至服务器;若服务器端authorized_keys文件损坏,可通过物理控制台或VNC登录服务器,手动修复文件内容或使用备份恢复,建议提前备份SSH密钥和配置文件,避免意外情况导致无法登录。
