SSH用法备忘录
justaLoli

几种远程的常见场景和使用做法。

连接命令:

ssh -p 2222 用户名@Linux机器的IP地址

记住连接配置、使用别名:

~/.ssh/config里面添加地址、用户、端口等信息。可以在文件中编辑别名。如:

1
2
3
4
Host [别名]
HostName [ip / 域名]
User [用户名]
Port [端口]

这样以后可以快捷访问:

ssh [别名]

(如果使用vscode连接,它会自动添加这些信息。如果用命令行连接,之后想使用别名连接,需要手动完成config 文件编辑)

免密码登陆

(来自ChatGPT,我补充部分在“注”中)

SSH 默认不记住密码,但可以通过 SSH 密钥认证 来实现免密登录,效果等同于记住密码,并且更加安全。以下是设置步骤:

1. 生成 SSH 密钥对

在 Mac 上生成一对 SSH 密钥(公钥和私钥):

1
ssh-keygen -t rsa -b 4096 -C "[email protected]"

按照提示直接按 Enter,使用默认路径 ~/.ssh/id_rsa 保存密钥对。这个命令会生成 id_rsa(私钥)和 id_rsa.pub(公钥)文件。

(注:这里的"[email protected]"可以换成任意注释。它只起到标记作用)

2. 将公钥复制到 Linux 机器

使用以下命令,将公钥添加到 Linux 台式机上的 ~/.ssh/authorized_keys 中:

1
ssh-copy-id -i ~/.ssh/id_rsa.pub 用户名@Linux机器的IP地址

如果你使用的是自定义端口(比如 2222),则需加上 -p 参数指定端口:

1
ssh-copy-id -i ~/.ssh/id_rsa.pub -p 2222 用户名@Linux机器的IP地址

这样,SSH 会将公钥传输并添加到远程机器的 authorized_keys 文件中。

(注:如果已经添加了config,可以用别名代替)

1
2
3

ssh-copy-id -i ~/.ssh/id_rsa.pub [别名]

(注2:如果想对多个远程设备进行自动登录,只需重复这一步即可,前面的密钥生成不用再进行)

3. 测试免密登录

完成以上步骤后,可以尝试登录,看是否不再要求输入密码:

1
ssh -p 2222 用户名@Linux机器的IP地址

(注:如果已经添加了config,可以用别名代替)

4. 启用 SSH Agent 来自动加载私钥(可选)

如果你不希望每次都手动加载私钥,可以使用 ssh-agent 让系统自动记住密钥。将以下命令添加到 ~/.bash_profile~/.zshrc 文件中:

1
2
3
eval "$(ssh-agent -s)"

ssh-add ~/.ssh/id_rsa

(注:如果放入默认路径~/.ssh/id_rsa,这一步可以不执行也能自动登录。后续出现异常再更新这里)

(注2:如果想让自己的多个设备都能免密码登录远程设备,可以将私钥复制到另一个设备上。注意数据转移时的安全)

X11转发

执行带GUI的远程程序。linux可直接执行,Mac需要安装Xquartz软件。Win这里不涉及,自己去找

注意:安装了软件不代表可以转发。需要在配置对应的主机中增加:

1
2
3
ForwardX11 yes
ForwardX11Trusted yes
Compression yes

如果使用用户@ip的方式连接,应当增加-YCflag,代表ForwardX11TrustedCompression

随后在控制台执行某些需要gui的程序进行测试。