SSH是安全远程登录Linux服务器的核心工具,通过加密通信保障数据安全。使用ssh 用户名@IP命令可连接服务器,首次连接需确认服务器指纹。推荐采用SSH密钥认证:运行ssh-keygen生成密钥对,用ssh-copy-id将公钥传至服务器,实现无密码登录。为提升安全性,可修改SSH默认端口(如2222),并配置防火墙规则。通过~/.ssh/config文件可设置主机别名、端口、密钥路径等,简化连接命令。利用SSH隧道可实现端口转发:-L参数将远程服务映射到本地,-R参数将本地服务暴露到远程。常见问题如连接被拒,需检查SSH服务状态与防火墙;认证失败需核对密钥权限与配置文件;连接超时则排查网络。性能优化包括服务器端关闭UseDNS与GSSAPI认证,客户端启用压缩(-C)及连接复用(ControlMaster),显著提升响应速度。调试时使用ssh -v查看详细日志,快速定位问题。

Linux远程登录命令SSH,简单来说,就是你在本地电脑上,通过一条指令,安全地连接到远端的Linux服务器。它就像是为你的远程操作打开了一扇加密的门,所有的指令、数据传输都会经过加密处理,确保了通信的安全性。没有SSH,我们几乎无法想象如何高效、安全地管理那些部署在世界各地的服务器。
要使用SSH登录一台远程Linux服务器,最基本的命令格式是:
ssh [用户名]@[服务器IP地址或域名]
举个例子,如果你的服务器IP是
192.168.1.100
root
ssh root@192.168.1.100
当你第一次连接一台新的服务器时,SSH会提示你验证服务器的指纹(fingerprint)。这是为了防止“中间人攻击”,确保你连接的确实是目标服务器。它会问你“Are you sure you want to continue connecting (yes/no/[fingerprint])?”,通常输入
yes
~/.ssh/known_hosts
接下来,系统会提示你输入该用户的密码。输入密码时,屏幕上不会显示任何字符,这是正常现象。输入完毕后按回车,如果密码正确,你就成功登录到远程服务器的命令行界面了。我第一次成功登录远程服务器时,那种感觉就像是突然拥有了掌控远方机器的能力,非常奇妙。
我个人强烈建议,在任何实际应用场景,尤其是生产环境中,都抛弃密码认证,转而使用SSH密钥对进行认证。这不仅大大提升了安全性,还能极大简化你的登录流程。密码再复杂,也比不上密钥对的安全性,而且频繁输入长密码也确实让人头疼。
SSH密钥认证的核心思想是:你有一对密钥,一个私钥(
id_rsa
id_rsa.pub
生成密钥对:
在你的本地机器上,打开终端,输入:
ssh-keygen -t rsa -b 4096
-t rsa
-b 4096
生成后,你的密钥对会默认存储在
~/.ssh/
id_rsa
id_rsa.pub
将公钥上传到服务器:
最方便的方法是使用
ssh-copy-id
ssh-copy-id [用户名]@[服务器IP地址或域名]
例如:
ssh-copy-id root@192.168.1.100
它会提示你输入一次远程用户的密码,然后自动将你的公钥添加到服务器的
~/.ssh/authorized_keys
如果没有
ssh-copy-id
cat ~/.ssh/id_rsa.pub
ssh root@192.168.1.100
.ssh
mkdir -p ~/.ssh
chmod 700 ~/.ssh
~/.ssh/authorized_keys
echo "你的公钥内容" >> ~/.ssh/authorized_keys
authorized_keys
chmod 600 ~/.ssh/authorized_keys
完成这些步骤后,你就可以直接使用
ssh root@192.168.1.100
SSH的功能远不止登录那么简单,它还是一把网络工具的“瑞士军刀”。在实际工作中,我经常需要进行一些高级配置,比如修改默认端口来增加安全性,或者利用SSH隧道访问内网资源。
修改SSH默认端口:
SSH默认使用22端口。虽然改端口不能阻止有针对性的攻击,但确实能有效减少大量针对22端口的自动化扫描和暴力破解尝试,让你的日志文件清净不少。
服务器端配置: 编辑SSH服务器的配置文件
/etc/ssh/sshd_config
Port 22
Port 2222
#
sudo systemctl restart sshd
sudo service sshd restart
ufw
firewalld
客户端连接: 当服务器端口修改后,你需要在客户端指定新端口进行连接:
ssh -p 2222 root@192.168.1.100
SSH客户端配置文件 ~/.ssh/config
为了方便管理多个服务器连接,或者为特定服务器设置复杂的SSH参数,你可以编辑本地的
~/.ssh/config
一个典型的
~/.ssh/config
Host my_server_prod
Hostname 192.168.1.100
User root
Port 2222
IdentityFile ~/.ssh/id_rsa_prod
Host dev_box
Hostname dev.example.com
User admin
Port 22
IdentityFile ~/.ssh/id_rsa_dev
# 启用连接复用,加快后续连接速度
ControlMaster auto
ControlPath ~/.ssh/control:%h:%p:%r
ControlPersist 600s有了这个配置,你只需要输入
ssh my_server_prod
192.168.1.100
2222
root
SSH隧道(端口转发):
SSH隧道是SSH最强大的功能之一。它允许你通过一个加密的SSH连接,将本地端口的流量转发到远程服务器的某个端口,或者反过来。
本地端口转发 (-L
192.168.1.100
127.0.0.1:3306
ssh -L 3307:127.0.0.1:3306 root@192.168.1.100
127.0.0.1:3307
远程端口转发 (-R
GatewayPorts yes
127.0.0.1:8000
192.168.1.100:8080
ssh -R 8080:127.0.0.1:8000 root@192.168.1.100
/etc/ssh/sshd_config
GatewayPorts yes
sshd
在使用SSH的过程中,我们总会遇到一些小问题,或者觉得连接不够流畅。这些问题大多有迹可循,并且通常可以通过一些配置来优化。
常见连接问题及排查:
ssh: connect to host ... port 22: Connection refused
sudo systemctl status sshd
sudo ufw status
sudo firewall-cmd --list-all
Permission denied (publickey,password)
~/.ssh/id_rsa
600
chmod 600 ~/.ssh/id_rsa
~/.ssh
700
~/.ssh/authorized_keys
600
authorized_keys
/etc/ssh/sshd_config
PubkeyAuthentication yes
连接超时 (ssh: connect to host ... port 22: Operation timed out
ping
SSH连接性能优化:
我遇到过几次SSH连接突然变得非常卡顿的情况,尤其是在网络条件不佳时,每次敲命令都有明显的延迟。以下是一些常用的优化方法:
禁用DNS反向解析 (UseDNS no
/etc/ssh/sshd_config
UseDNS no
sshd
禁用GSSAPI认证 (GSSAPIAuthentication no
/etc/ssh/sshd_config
GSSAPIAuthentication no
sshd
启用压缩 (Compression yes
-C
~/.ssh/config
Compression yes
ssh -C root@192.168.1.100
连接复用 (ControlMaster
ControlPath
ControlPersist
scp
sftp
~/.ssh/config
Host *
ControlMaster auto
ControlPath ~/.ssh/control:%h:%p:%r
ControlPersist 600s # 第一个连接关闭后,保持主连接600秒这个配置会让SSH在连接到任何主机时,都尝试建立一个可复用的主连接。当你在600秒内再次连接同一台主机时,它会直接复用已有的连接,速度飞快。
当你遇到问题时,
ssh -v
ssh -v root@192.168.1.100
以上就是Linux远程登录命令ssh使用详解的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号