知识 Wiki 总览 / SSH 与远程连接
常用字段说明
在ssh <username>@ <server_address>的基础上,还可以有更多操作,格式大致为:
ssh <选项> <username>@<server_address> <远程命令>
下面是一些主要的字段:
-p: port。指定 SSH 服务端口,默认是22。HPC如果在网关配置了端口映射,就在这里写映射后的端口。
# 未指定端口时默认使用22
ssh <username>@<server_address>
# 指定服务端口或映射后的端口
ssh -p <port> <username>@<server_address>
-l: login。指定登录用户。
# 二者在作用上无异
ssh <username>@<server_address>
ssh -l <username> <server_address>
-i: identity。指定用于公钥认证的私钥文件:
ssh -i ~/.ssh/id_ed25519 <username>@<server_address>
-F: File。指定另一份 SSH 客户端配置文件:
ssh -F ~/.ssh/hpc_config <username>@<server_address>
-J: jump。指定跳板机,先连接跳板机,再连接目标主机:
ssh -J <jump_user>@<jump_server>:<jump_port> <username>@<server_address>
-4 / -6: 强制使用 IPv4 / IPv6 地址连接:
ssh -4 <username>@<server_address>
ssh -6 <username>@<server_address>
-v: verbose。输出连接调试信息;可以重复增加详细程度,最多常用到 -vvv:
ssh -v <username>@<server_address>
ssh -vvv <username>@<server_address>
-G: 显示应用 Host 和 Match 配置规则后的参数,然后退出,不会建立连接:
ssh -G <host_alias>
-V: 显示 OpenSSH 客户端版本:
ssh -V
-o: option。临时指定一项配置,格式为“配置项=值”:
ssh -o ConnectTimeout=10 <username>@<server_address>
-N: 只建立连接,不运行远程命令;常和端口转发一起使用:
ssh -N -L 8080:127.0.0.1:80 <username>@<server_address>
-t: 请求分配远程终端;重复两次 -tt 可强制分配终端。
ssh -t <username>@<server_address>
ssh -tt <username>@<server_address>
-T: 不分配远程终端,常用于脚本或自动化连接:
ssh -T <username>@<server_address>
-L: local。将本地端口转发到远端可访问的服务:
ssh -L 8080:127.0.0.1:80 <username>@<server_address>
# 本机访问 127.0.0.1:8080,即可连到远端的 127.0.0.1:80
-R: remote。将远端端口转发到本机可访问的服务:
ssh -R 9000:127.0.0.1:3000 <username>@<server_address>
-D: dynamic。建立动态端口转发,提供 SOCKS 代理:
ssh -D 1080 <username>@<server_address>
-A: 转发本机 SSH Agent。只对可信任的远程主机启用;远端进程可能借此使用本机已加载的密钥:
ssh -A <username>@<server_address>
-C: 请求压缩传输;慢速网络下有时有帮助,快速网络下可能变慢:
ssh -C <username>@<server_address>
配置文件~/.ssh/config中的常用配置项:
Host jump
HostName jump.example.com
User alice
Port 2222
Host hpc
HostName server.example.com
User alice
Port 22
IdentityFile ~/.ssh/id_ed25519
IdentitiesOnly yes
ProxyJump jump
ConnectTimeout 10
ServerAliveInterval 60
ServerAliveCountMax 3
Host是连接时使用的别名;HostName是实际主机名;User、Port和IdentityFile分别指定用户、端口和私钥。ProxyJump指定跳板机;ConnectTimeout设置连接超时;ServerAliveInterval和ServerAliveCountMax用于探测失联连接。配置后可直接运行:
ssh hpc
