几种远程的常见场景和使用做法。
连接命令:
ssh -p 2222 用户名@Linux机器的IP地址
记住连接配置、使用别名:
在~/.ssh/config
里面添加地址、用户、端口等信息。可以在文件中编辑别名。如:
1 | Host [别名] |
这样以后可以快捷访问:
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. 测试免密登录
完成以上步骤后,可以尝试登录,看是否不再要求输入密码:
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 | ForwardX11 yes |
如果使用用户@ip
的方式连接,应当增加-YC
flag,代表ForwardX11Trusted
和Compression
随后在控制台执行某些需要gui的程序进行测试。