适用于 Linux 用户的 SSH 命令备忘单
您是否正在寻找终极 SSH 命令备忘单?此 SSH 备忘单包含日常管理 Linux 基础设施所需的 SSH 命令。 SSH 也称为 Secure Shell,是一种加密网络协议,用于通过不安全的网络安全地运行网络服务。
要开始使用不同的 ssh 命令行选项,请遵循本指南并随意测试所有这些命令。您可以在 VirtualBox 或 VMware Workstation 等虚拟环境中进行练习,而不是在生产环境中运行所有内容。
1.通过pem文件(私钥)进行SSH
如果要使用 Pem 密钥访问远程服务器,命令语法为:
ssh -i /path/to/file.pem user@server
私钥文件的路径位于-i标志之后。
2. 连接到非标准 ssh 端口:
默认的 SSH 端口是 22,要使用不同的服务端口访问远程系统,请使用 -p 选项。
ssh -p 2222 [email
在这里,我们连接到在端口 2222 上运行的 SSH 服务器。防火墙必须允许该端口。
3. 连接并转发认证代理
使用-A 选项启用身份验证代理的转发。
ssh -A user@server
这也可以在配置文件中针对每个主机进行指定。
4. 连接远程服务器并执行命令:
有时您想在远程服务器上的 bash shell 上运行命令。这是通过在服务器部分之后传递命令及其选项来实现的。
ssh -t user@server'the-remote-command'
-t 用于强制伪终端分配。这可用于在远程计算机上执行任意基于屏幕的程序,这非常有用,例如实施菜单服务时。
例如,让我们连接到服务器并对 8.8.8.8 执行 ping 操作,计数为 3。
$ ssh outboundmx-01 'ping -c 3 8.8.8.8'
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=60 time=6.74 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=60 time=7.27 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=60 time=6.77 ms
--- 8.8.8.8 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2004ms
rtt min/avg/max/mdev = 6.740/6.930/7.271/0.241 ms
执行指定命令后,SSH 会话将退出。
5. 通过 SSH 建立 X 会话隧道:
ssh 中的-X选项用于启用 X11 转发。这也可以在配置文件中针对每个主机进行指定。可以使用-x禁用选项禁用 X11 转发。
ssh -X user@server
下面的示例将:
- 使用本地主机(端口8080)和远程之间的隧道重定向流量
- 通过代理 (personal.server.com) 的主机 (remote.example.com:5000):
ssh -f -L 8080:remote.example.com:5000 [email -N
-N 表示不执行远程命令。这对于转发端口很有用。
6. 通过 SSH 启动特定的 X 应用程序:
使用 -X 选项通过 ssh 会话启动应用程序。
ssh -X -t user@server 'firefox'
这将启动 Firefox 应用程序并在本地计算机上显示 UI。
7.创建SOCKS代理隧道
ssh -D 9999 user@server
这将在本地主机和端口 10000 上创建 SOCKS 代理。其工作方式是分配一个套接字来监听本地端的端口,可以选择绑定到指定的bind_address。每当与此端口建立连接时,该连接都会通过安全通道转发,然后使用应用程序协议来确定从远程计算机连接到的位置。
目前支持 SOCKS4 和 SOCKS5 协议,并且 ssh 将充当 SOCKS 服务器。请注意,只有 root 可以转发特权端口。
8. 具有数据压缩和加密功能的SSH
要请求压缩所有数据(包括 stdin、stdout、stderr 以及转发的 X11、TCP 和 UNIX 域连接的数据),请使用-C选项。在使用调制解调器和其他慢速设备时,这是理想的选择连接系统。不要在更快的网络上使用它,因为它只会减慢速度。
压缩算法与gzip 使用的相同。 -c用于指定加密会话的密码规范。多个列表是通过用逗号分隔来完成的。例子
ssh user@server -C -c blowfish -X
-X –> 使用 X 会话
-C –> 进行数据压缩
-c –> 使用河豚加密SSH 会话
9.SSH复制文件
下面的示例展示了如何压缩远程服务器上的文件并通过管道传输到 tar 复制到本地系统。压缩和解压缩是使用tar命令完成的。如果您没有充当 ssh 客户端的scp或rsync,这会很有用。
$ ssh jmutai@outboundmx-01 "cd ~/mydir; \
tar zcf - file1.txt file2.txt" | tar zxf -
# confirm if copied
$ ls file1.txt file2.txt
10.强制公钥复制到远程服务器
您尝试复制 ssh 密钥但始终失败。您可以使用以下命令强制复制:
SSH_OPTS='-F /dev/null' ssh-copy-id user@server
11.保存私钥密码
使用 ssh,您可以配置身份验证代理来保存密码,这样您就不必在每次使用 SSH 密钥时重新输入密码。
eval $(ssh-agent) # Start agent on demand
ssh-add # Add default key
ssh-add -l # List keys
ssh-add ~/.ssh/id_rsa # Add specific key
ssh-add -t 3600 ~/.ssh/id_rsa # Add with timeout
ssh-add -D # Drop keys
12.通过SSH挂载文件夹/文件系统
从 https://github.com/libfuse/sshfs 安装 SSHFS。
另一篇文章介绍了 SSHFS 的安装和使用:
- 在 Ubuntu/Fedora/Arch 上安装 sshfs 并使用 sshfs
该命令将远程目录挂载到本地计算机。
sshfs name@server:/path/to/folder /path/to/mount/point
完成后,您可以使用以下命令卸载目录:
fusermount -u mountpoint
13.使用macs通过SSH读取文件
文档位于 Emacs 挂载远程文件
安装 Emacs 后,可以使用以下命令读取远程文件:
emacs /ssh:name@server:/path/to/file
14. 删除 ~/.ssh/known_hosts 文件中的 IP 地址/主机名。
有时,您想要将 ssh 密钥复制到远程服务器,并收到一条警告,指出 IP/主机名已存在于 ~/.ssh/known_hosts 中,要删除该条目,请使用:
ssh-keygen -f .ssh/known_hosts -R ip-or-hostname
16. 更新 SSH 密钥密码
使用我们的指南来更新或更改 SSH 密钥密码。
- 在 Linux/Unix 上更改或更新 SSH 密钥密码
17. 更改SSH服务端口
以下指南应该会有所帮助。
- 使用 SELinux 强制更改 CentOS/RHEL 和 Fedora 上的 SSH 端口
包起来
Secure Shell (SSH) 允许两台计算机之间通过安全通道交换数据。这将作为 Linux 系统管理员的终极 ssh 备忘单。您可以对您经常使用但此处未涵盖的任何命令发表评论,我很乐意更新。