当前位置:首页>Linux>Linux命令每日一清单020:ssh--远程连接命令速查表

Linux命令每日一清单020:ssh--远程连接命令速查表

  • 2026-09-06 22:02:48
Linux命令每日一清单020:ssh--远程连接命令速查表

SSH(Secure Shell)是Linux/Unix系统中用于安全远程登录的标准协议和工具集。它通过加密技术保护网络连接的安全性,防止窃听、连接劫持等攻击。ssh命令是OpenSSH套件的核心组件,提供了安全的远程命令行访问能力。

除了基本的远程登录,SSH还支持文件传输(scp、sftp)、端口转发、X11转发、代理认证等丰富功能。作为系统管理和自动化运维的基础工具,掌握SSH是每个Linux用户的必备技能。

1. 基本连接

命令说明
ssh user@host
使用指定用户连接到远程主机
ssh host
使用当前用户名连接
ssh -p 2222 user@host
指定自定义端口连接
ssh user@host "ls -la"
在远程主机执行命令
ssh -v user@host
详细模式(调试连接问题)
ssh -q user@host
安静模式(不输出警告信息)

2. SSH密钥管理

命令说明
ssh-keygen
生成SSH密钥对(默认RSA 3072位)
ssh-keygen -t ed25519
生成Ed25519密钥(推荐)
ssh-keygen -t rsa -b 4096
生成4096位RSA密钥
ssh-keygen -p -f ~/.ssh/id_ed25519
修改密钥密码
ssh-keygen -y -f ~/.ssh/id_ed25519
从私钥显示公钥
ssh-keygen -R hostname
从known_hosts中移除主机
ssh-keygen -H
对known_hosts文件进行哈希处理
ssh-keygen -F hostname
在known_hosts中查找主机

3. 复制SSH密钥

命令说明
ssh-copy-id user@host
将公钥复制到远程主机(实现免密登录)
ssh-copy-id -i ~/.ssh/key.pub user@host
复制指定的公钥
ssh-copy-id -p 2222 user@host
指定端口复制公钥
cat ~/.ssh/id_rsa.pub | ssh user@host "cat >> ~/.ssh/authorized_keys"
手动追加公钥

4. SSH代理管理

命令说明
eval "$(ssh-agent -s)"
启动SSH代理
ssh-add
添加默认密钥(~/.ssh/id_rsa等)到代理
ssh-add ~/.ssh/id_ed25519
添加指定密钥
ssh-add -l
列出代理中的密钥
ssh-add -L
列出代理中的公钥
ssh-add -d ~/.ssh/id_ed25519
从代理中移除指定密钥
ssh-add -D
清空代理中所有密钥
ssh-add -t 3600
添加密钥并设置有效期(秒)

5. SCP安全复制

命令说明
scp file user@host:/path
上传文件到远程主机
scp user@host:/path/file .
从远程主机下载文件
scp -r dir user@host:/path
递归复制目录
scp -P 2222 file user@host:/path
指定端口复制
scp -C file user@host:/path
启用压缩传输
scp -p file user@host:/path
保留文件时间戳和权限
scp -3 user1@host1:/path/file user2@host2:/path
在两个远程主机间直接传输

6. SFTP交互式传输

命令说明
sftp user@host
连接到远程主机
sftp -P 2222 user@host
指定端口连接
sftp -b batchfile user@host
使用批处理文件执行
get file
下载文件(在sftp内执行)
put file
上传文件(在sftp内执行)
ls, cd, pwd
导航远程目录
lls, lcd, lpwd
导航本地目录
mkdir, rm, rename
远程文件操作
exit 或 quit
退出sftp

7. SSH隧道(端口转发)

命令说明
ssh -L 8080:localhost:80 user@host
本地端口转发(本地8080 -> 远程80)
ssh -R 8080:localhost:80 user@host
远程端口转发(远程8080 -> 本地80)
ssh -D 1080 user@host
动态SOCKS代理
ssh -N -L 8080:localhost:80 user@host
仅建立隧道(不打开shell)
ssh -f -N -L 8080:localhost:80 user@host
后台运行隧道
ssh -L 3306:db-server:3306 jump-host
通过跳板机访问数据库

8. SSH配置文件

~/.ssh/config 文件示例及常用选项:

配置项说明与示例
Host
主机别名
HostName
实际服务器地址
User
登录用户名
Port
SSH端口
IdentityFile
私钥路径
ProxyJump
跳板机
ForwardAgent
代理转发
ForwardX11
X11转发
ServerAliveInterval
保活间隔
StrictHostKeyChecking
主机密钥检查

配置示例:

Host prod
    HostName 192.168.1.100
    User deploy
    Port 2222
    IdentityFile ~/.ssh/prod-key

Host bastion
    HostName bastion.example.com
    User jumpuser

Host internal-*
    ProxyJump bastion
    User admin

9. 连接选项

选项说明
-p port
指定SSH端口
-i keyfile
指定身份文件(私钥)
-o option=value
设置配置选项
-F configfile
使用自定义配置文件
-J host
通过跳板机连接(ProxyJump)
-X
启用X11图形转发
-Y
启用可信X11转发
-A
启用代理转发
-t
强制分配伪终端
-T
禁用伪终端分配
-n
重定向stdin到/dev/null
-N
不执行远程命令(用于端口转发)
-f
后台运行

10. 安全加固选项

选项说明
-o StrictHostKeyChecking=yes
严格主机密钥检查
-o UserKnownHostsFile=/dev/null
忽略known_hosts(不推荐)
-o PasswordAuthentication=no
禁用密码认证(仅密钥)
-o PubkeyAuthentication=yes
启用密钥认证
-o ConnectTimeout=10
连接超时(秒)
-o ServerAliveInterval=60
保活间隔(秒)
-o ServerAliveCountMax=3
保活失败次数
-o LogLevel=VERBOSE
设置日志级别

11. 实用组合模式

命令/操作说明
ssh user@host "tar czf - /data" | tar xzf - -C /restore
远程备份并本地恢复
ssh user@host "mysqldump dbname | gzip" > backup.sql.gz
远程数据库备份到本地
ssh -t user@host "sudo systemctl restart nginx"
通过SSH执行需要sudo的命令
ssh -o ConnectTimeout=5 user@host || echo "连接失败"
超时检测
for host in host1 host2 host3; do ssh $host uptime; done
批量执行命令
ssh -f -N -M -S /tmp/ssh-socket -L 8080:localhost:80 user@host
创建复用连接的隧道

12. 故障排查

问题解决方法
Connection refused
检查目标主机SSH服务是否运行:systemctl status sshd;端口是否正确
Permission denied (publickey)
确认私钥正确;检查远程~/.ssh/authorized_keys;验证权限(600/700)
Host key verification failed
主机密钥变更,使用ssh-keygen -R hostname移除旧记录
Connection timed out
检查网络连通性;防火墙是否允许SSH端口;路由是否正确
Too many authentication failures
指定正确的私钥:ssh -i key;使用IdentitiesOnly=yes
agent refused operation
检查ssh-agent状态;确认密钥已添加:ssh-add -l
通道建立后无法连接
确认端口转发绑定地址;检查防火墙策略;使用-v调试

提示: 密钥认证比密码认证更安全,建议使用Ed25519或RSA 4096位密钥,并设置密码保护私钥。对于日常管理的服务器,建议配置~/.ssh/config简化连接命令。使用跳板机时,ProxyJump选项比传统的ProxyCommand更简洁高效。生产环境建议禁用root直接登录(PermitRootLogin no)和密码认证(PasswordAuthentication no)。

本文PDF格式下载:

  关注公众号(haopython),请回复: LLTSSH

最新文章

随机文章