通过SSH协议是Linux访问Linux服务器最标准、最安全的方式,结合密钥认证可实现无密码登录,这也是绝大多数云服务器和本地Linux设备间的首选方案。
linux远程连接linux服务器命令详解
从一台Linux设备登录另一台Linux服务器,最核心的命令就是ssh,SSH(Secure Shell)加密了所有通信内容,防止中间人窃听,是行业公认的远程管理标准,据工信部发布的《网络安全等级保护基本要求》,远程管理必须采用加密通道,直接印证了SSH的合规地位。
SSH基础操作流程
使用密码登录
ssh 用户名@服务器IP地址
执行后系统会提示输入密码,注意密码输入时不会显示任何字符,这是正常现象,首次连接会提示确认主机指纹,输入yes即可。
使用密钥登录(更安全高效)
- 在本地生成密钥对:
ssh-keygen -t rsa -b 4096
默认保存在
~/.ssh/id_rsa(私钥)和~/.ssh/id_rsa.pub(公钥)。 - 将公钥上传到服务器:
ssh-copy-id 用户名@服务器IP
之后登录就不再需要密码了。
修改默认端口
许多服务器为了安全会更改SSH端口(从22改为其他数字),连接时需指定:
ssh -p 端口号 用户名@服务器IP
常见连接异常排查
- 连接超时:检查服务器防火墙是否放行了SSH端口,在服务器上执行
sudo ufw status查看。 - 密钥权限错误:私钥文件权限必须为600,公钥为644,否则SSH会拒绝使用,使用
chmod 600 ~/.ssh/id_rsa修正。 - Host key变更:如果服务器重装系统,客户端会报警告,需要在本地
~/.ssh/known_hosts中删除旧记录。
业内专家指出,大约70%的Linux服务器安全事件源于弱密码或未配置密钥认证,因此将密码登录改为密钥认证是性价比最高的安全加固手段。
linux怎么访问另一台linux服务器:图形化与批量场景
除了命令行,部分运维场景需要图形界面或同时管理多台服务器,近年来自动化运维工具大量普及,但核心依旧基于SSH协议。
使用图形化工具远程连接
- Remmina:Linux桌面环境下的远程桌面客户端,支持RDP、VNC、SSH等协议,安装后可以直接保存SSH连接,支持文件传输。
- MobaXterm(通过Wine或原生Linux版):集成了多标签SSH、X11转发、SFTP文件管理器,适合需要同时操作多个会话的用户。
- VS Code Remote-SSH:开发者常用,在VS Code中安装
Remote-SSH插件,可以直接在本地编辑远程服务器上的代码,无需手动传输文件,行业共识认为,这是近年最受欢迎的远程开发模式之一。
批量管理多台服务器
当服务器数量超过10台时,逐台SSH登录效率极低,推荐使用以下工具:
- Ansible:基于SSH的自动化运维工具,无需在目标服务器安装代理,通过一个YAML清单文件定义主机组,然后执行Playbook即可批量执行命令。
[webservers] web1 ansible_host=192.168.1.10 web2 ansible_host=192.168.1.11
然后运行
ansible webservers -m ping测试连接。 - ClusterSSH:同时向多个终端发送相同命令,适合临时性批量操作。
内网穿透场景
如果服务器没有公网IP,但需要在外部访问,常用工具包括:
- frp:在服务器(内网)和公网中转服务器之间建立隧道,配置简单,支持TCP、UDP、HTTP等协议。
- ZeroTier:组建虚拟局域网,将不同物理位置的设备纳入同一二层网络,然后直接使用内网IP的SSH连接。
linux访问linux服务器安全配置要点
远程访问的安全不能只依赖单一措施,根据《OWASP 安全配置指南》和《CIS 基准》,以下配置是基线要求。
禁用密码登录并改用密钥
编辑服务器上的/etc/ssh/sshd_config,将PasswordAuthentication改为no,然后重启SSH服务:
sudo systemctl restart sshd
此后只有持有对应私钥的用户才能登录,暴力破解密码的尝试彻底失效。
限制登录用户和IP
- 在
sshd_config中设置AllowUsers指定可登录的用户名,其他用户即使有密码也无法登录。 - 使用
AllowUsers user@IP将登录权限限制在特定来源IP,比如公司出口IP,非常适用于linux服务器远程管理工具推荐场景下的安全策略。
配置Fail2ban防暴力破解
Fail2ban会监控SSH登录日志,在短时间内多次失败后动态封禁来源IP,安装配置示例:
sudo apt install fail2ban sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local sudo systemctl restart fail2ban
默认规则下,3次尝试失败后封禁15分钟,能有效降低被扫描的风险。
使用SSH堡垒机
堡垒机作为跳板,所有外部SSH连接先到达堡垒机,再由堡垒机转发到内部服务器,堡垒机负责审计所有操作记录,满足合规要求,一些企业会使用跳板机配合linux ssh连接慢怎么办的优化(如开启ControlMaster复用连接),减少每次登录的认证开销。
不同场景下的访问方案对比
| 场景 | 推荐方案 | 安全等级 | 配置复杂度 |
|---|---|---|---|
| 单台云服务器 | 密钥认证SSH | 高 | 低 |
| 多台同网络服务器 | Ansible + 密钥 |
高 | 中 |
| 无公网IP的内网服务器 | frp隧道 | 中(需加密) | 高 |
| 图形化远程桌面 | Remmina + VNC | 中(VNC本身不加密,需配合SSH隧道) | 中 |
| 开发场景 | VS Code Remote-SSH | 高(依赖SSH加密) | 低 |
表中信息基于行业通用实践,具体选择需结合业务规模和安全要求,例如金融行业必须使用堡垒机+双因素认证,而个人开发者用密钥SSH即可满足大部分需求。
常见问题解答
linux远程连接linux服务器时提示“Permission denied”怎么办?
先确认用户名和密码是否正确,如果使用密钥,检查服务器上~/.ssh/authorized_keys文件是否包含本机公钥,且权限为600,同时查看服务器上的/var/log/auth.log,日志会明确拒绝原因可能是密钥不匹配,也可能是用户被禁止登录,如果之前能连后来突然失败,检查是否有人修改了sshd_config或AllowUsers规则。
如何让linux访问linux服务器时不输入密码?
使用密钥认证并配置ssh-agent,在本地执行ssh-add ~/.ssh/id_rsa将私钥加入代理,之后同一会话内的SSH连接都无需再输入密钥密码,如果希望每次登录都完全自动,生成密钥时直接按回车跳过密码短语设置即可,但这样私钥泄露风险更高,建议仅在受信任的本地环境使用。
用ssh命令连接linux服务器速度很慢,如何优化?
连接慢通常是因为DNS反向解析超时,在服务器端的/etc/ssh/sshd_config中设置UseDNS no,重启SSH服务即可,客户端也可以开启ControlMaster复用连接:在~/.ssh/config中添加:
Host
ControlMaster auto
ControlPath ~/.ssh/controlmasters/%r@%h:%p
ControlPersist 10m
这样第一次连接后,后续连接会复用已有通道,速度大幅提升。
首发原创文章,作者:世雄 - 原生数据库架构专家,如若转载,请注明出处:https://idctop.com/article/495299.html



