Linux远程连接另一台服务器,最标准可靠的方式就是使用SSH(Secure Shell)协议,通过命令行执行ssh 用户名@IP地址即可完成连接。如果你面对的是没有图形界面的Linux系统,掌握SSH就相当于拿到了远程操作的钥匙,这篇文章会把从基础连接到进阶优化的完整路径拆开讲透,全程使用可复制的命令,你照着操作就能搞定。
linux远程登录服务器命令:基础操作全流程
远程登录Linux服务器,日常使用频率最高的场景就是通过终端工具发起SSH连接,我习惯把本地电脑叫作“客户端”,把被连接的那台机器叫作“远端主机”,整个过程可以拆解为三步:确认基本信息、发起连接、验证身份。
连接前需要准备的三项信息
在输入任何命令之前,先确认你手里有没有这三样东西:
- 远端主机的IP地址:无论是公网IP还是内网IP,这是找到那台服务器的门牌号,如果是正规机房服务器,通常还会配一个独立的公网IP。
- 登录用户名:root是最常用的管理员账号,但出于安全考虑,很多团队会创建一个普通用户来日常操作。
- 密码或密钥文件:密码登录适合临时使用,密钥登录适合长期维护。
执行基础连接命令
打开你本地电脑的终端,输入以下格式的命令:
ssh username@192.168.1.100
把username换成实际的登录账号,把168.1.100换成远端主机的IP地址,执行之后,系统会提示你输入密码,输入正确就进入了远端主机的命令行界面。
小提示:如果你本地的用户名和远端主机上的用户名相同,可以简写为ssh 192.168.1.100。
指定端口连接:默认22之外的选择
多数Linux服务器出于安全考虑,会把SSH端口从默认的22改成一个高位端口,比如2222或10022,这时候需要加-p参数来指定端口:
ssh -p 2222 username@192.168.1.100
不少云服务商的安全组策略也要求使用非默认端口,我遇到不少新手栽在这个地方,以为服务器连不上,其实是忘了加端口参数。
linux怎么远程操作另一台服务器(密钥认证篇):免密登录配置详解
每次输密码虽然简单,但有两个痛点:一是密码容易被人偷看或暴力破解,二是频繁输入很影响效率,业内专家指出,在生产环境中使用密钥认证是Linux远程管理的基础安全底线。
生成密钥对的完整步骤
密钥认证的原理是本地存一把私钥,远端主机存一把公钥,两者匹配才能放行,生成密钥对只需要一条命令:
ssh-keygen -t rsa -b 4096
执行后系统会问你要把密钥文件保存在哪里,直接回车用默认路径即可,接着会让设置一个passphrase(口令),这个口令是保护私钥用的,可以留空,但为了安全建议设置一个。
生成完成后,在~/.ssh/目录下能看到两个文件:
- id_rsa:私钥文件,务必留在本地,不能泄露。
- id_rsa.pub:公钥文件,需要上传到远端主机的指定位置。
如何把公钥安全地放到远端主机上
行业共识认为,最稳妥的传递方式是用ssh-copy-id命令,在本地终端执行:
ssh-copy-id username@192.168.1.100
命令执行过程中会要求输入一次远端主机的密码,输入正确后公钥就被自动追加到了远端主机的~/.ssh/authorized_keys文件中,以后再连接时,就不需要输入密码了。
注意:如果本地没有安装ssh-copy-id,也可以手动操作,把id_rsa.pub复制出来,在远端主机上编辑~/.ssh/authorized_keys这个文件,把内容粘贴进去保存即可。
关闭密码登录的实操建议
启用密钥登录并确认一切正常之后,可以考虑修改远端主机的SSH配置文件来禁用密码登录,编辑:
/etc/ssh/sshd_config
找到PasswordAuthentication这一项,把值改成no,修改完成后重启SSH服务让配置生效:
systemctl restart sshd
做这一步之前,务必确认密钥登录已经畅通,我曾见过有人改完配置发现密钥没生效,直接被锁在服务器外面。
远程控制服务器日常操作:从文件传输到任务管理
连接上服务器之后,很多人以为只能敲命令,实际上借助一些内置工具,你可以轻松完成文件上传下载、端口转发等操作。
scp命令:跨服务器传文件
要在本地和远程之间拷贝文件,使用
scp命令,它基于SSH加密传输,安全可靠,从本地上传文件到远端主机:
scp /本地路径/文件名 username@192.168.1.100:/远端目标路径/
从远端主机下载文件到本地:
scp username@192.168.1.100:/远端路径/文件名 /本地目标路径/
如果要传输整个目录,加上-r参数即可,我平时部署代码包时会先用tar打包,再用scp推送到远程服务器,一气呵成。
远程执行单条命令:不进入交互界面
有些场景下你只是想在远端主机上跑一条命令,并不想登录进去,这种需求用一条命令就能搞定:
ssh username@192.168.1.100 "df -h"
这条命令会直接连接远端主机,执行df -h检查磁盘空间,输出结果后自动断开连接,这个技巧在批量巡检几十台服务器时特别高效,配合一个简单的脚本就能完成全量检查,这套方法也是业界常见的linux远程批量管理服务器的标准姿势。
保持会话不断开的两个常用手段
远程操作过程中,最怕网络波动导致会话中断,正在跑的任务也跟着被干掉,解决办法有两种:
- screen:一个终端复用工具,可以在会话中断后重新接回来。
- tmux:功能更强的复用工具,支持窗口分割、会话共享。
以tmux为例,进入远端主机后直接输入tmux创建一个新会话,在里面执行长时间运行的任务,就算本地断网了,重新连接后在终端里输入tmux attach就能回到之前的界面,任务依然在跑。
ssh连接服务器超时怎么办:三个高频故障的排查思路
连接超时这个报错几乎每个运维都遇到过,原因归结起来无非三类:网络不通、端口被墙、服务没启动,按照从外到内的顺序排查,效率最高。
检查端口连通性
先从本地用telnet测试一下远端主机的SSH端口是否对外开放:
telnet 192.168.1.100 22
如果卡住不动或者提示连接失败,说明网络层面就不通,需要用ping测试主机是否在线,再用traceroute看路由到哪里断了。
检查防火墙与安全组策略
如果telnet能通,但SSH仍然卡顿,问题出在防火墙或者云安全组上,在远端主机上执行:
systemctl status firewalld
查看防火墙状态,如果是开启状态,执行以下命令放行22端口:
firewall-cmd --permanent --add-port=22/tcp
firewall-cmd --reload
如果用的是云服务器,还要登录云控制台检查安全组规则是不是放行了TCP 22端口,我自己处理过的多数SSH超时案例,最后都定位在安全组放行规则上。
查看SSH服务运行状态
在远端主机本地(例如通过机房管理员的IPMI/KVM控制台登录)查看SSH服务状态:
systemctl status sshd
看到active (running)说明服务正常,如果显示failed或者inactive,需要启动服务:
systemctl start sshd
问答环节
远程控制Linux服务器用什么软件最方便?
命令行场景推荐你使用系统自带的终端工具,不需要安装额外软件,如果你是Windows系统,推荐安装Windows Terminal配合OpenSSH客户端使用,如果需要图形化管理多台服务器,可以试试FinalShell或Xshell,它们内置了文件管理窗口和快捷命令面板。
公司内网和公网访问同一台服务器有什么区别?
内网连接通常使用私有IP地址,速度更快、延迟更低;公网连接使用的是公网IP或域名,需要经过路由器或云安全组的转发,如果公司有跳板机,就需要先SSH登录跳板机,再从跳板机SSH跳到目标服务器。
忘记服务器密码但有密钥还有救吗?
如果你手头有可用的私钥文件,依然可以通过SSH密钥登录服务器,登录后执行passwd username即可重置该用户的密码,如果私钥也丢了,只能通过云服务商控制台的重置密码功能,或者机房物理访问方式来恢复,切记日常做好备份。
远程管理Linux服务器本质上就是熟练运用SSH这把钥匙,从基础连接到免密登录,再到日常传输和故障排查,每项技能都能省下不少时间,我建议你拿一台测试服务器先把密钥认证和端口转发的流程走一遍,等形成肌肉记忆之后,再打理生产环境会踏实很多,记得把SSH端口改掉,把密码登录关掉,这两件事做完,你的远程管理基础安全就算达标了。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/714381.html





