除远程登录外,基于SSH协议还有一些实用的功能,这里记录一下所学到的知识点。

词语约定:大写SSH指代协议,小写ssh指代openssh实现的工具。


登录实现

基础版

通常我们登录远程主机时,方式是使用ssh打开一个远程主机的shell命令行,然后实现交互式的任务操作。但ssh工具可以在登录时直接指定提交的任务,并将标准输出指定到本地终端。这样就可以在批处理文件中实现远程计算的任务了。

1
ssh -p 22 username@host "bash commands"

密钥版

除了常规的盲打密码登录之外,还可以使用密钥登录。SSH使用非对称加密方法,即需要公钥和私钥配对使用。此时本地机子即为客户端,而远程主机为服务端。客户端需要生成密钥,并将公钥告诉服务端。参见这篇教程,介绍得非常详细。

别名版

密钥安全地解决了输入密码的繁琐步骤,但依然需要指定用户名、主机名及端口才能登录,这个步骤也可以使用别名来规避。这里有两种解决方法,一种是取bash命令别名,另一种是取ssh主机别名。

  1. bash 别名很好理解,就像是我们平时使用的ll命令其实是ls -lh一样,使用alias来重命名一长串的固定命令。具体为执行:
    alias new_name='ssh -p 22 username@host'
  2. ssh工具允许用户编辑 ~/.ssh/config 来指定主机别名,下面举一个例子,详细地使用方法可自行百度之。
    下面的id_ed25519路径指的是密钥文件在本地的文件路径。
1
2
3
4
5
6
Host serverA
    User reson
    HostName 192.168.1.100
    Port 22
    IdentityFile ~/.ssh/id_ed25519
    IdentitiesOnly yes

文件传输

这个指的当然就是sftp工具了。Cinnamon桌面自带的Nemo文件管理器使用sftp完成了远程的文件管理,并使得与管理本地文件无差别的体验。