Obeta

什么是SSH

ssh是我们经常使用到的一个工具,到处都能看到它的身影,并且很多其它工具命令都是基于它来制作的.

有时远程登录计算机是必要的.您可能需要访问文件,需要帮助朋友解决问题,甚至在计算机之间传输文件.只要他有安装 SSH,就可以通过加密连接连接到运行 Linux 的另一台计算机(或者其他 Unix 系统,如 BSD 或 Solaris).要让远程主机接收 SSH 连接,它必须运行守护程序(sshd),如果使用防火墙,您必须让它接受到端口 22 的传入数据包

一旦你用 ssh,那么你跟服务器的连接是加密的,攻击者即使通过网络嗅探收集你的数据,但是也无法破解,因此使用时非常安全的.

安装

如果你用的 Mac OS,那么已经自带 SSH,因此你可以使用,而如果是 Ubuntu,可以使用下面命令安装:

[sudo] apt install ssh

使用

使用时非常简单的:

ssh username@remotehost

如果这是您第一次使用当前用户下的计算机登录特定主机,它会询问您是否希望接受该主机加入已知连接列表.如果你之前收到过这条消息并且这次又提示了,它可能是一个完全不同的主机,这可能表明有人伪装成了那台电脑想攻击你.(当然这种情况不多)

$ ssh rice@remotehost.com
The authenticity of host 'remotehost (192.168.11.99)' can't be established.
ECDSA key fingerprint is SHA256:zCbRgBnnMpyQOmEpsh2+0j/hwgBr7Lg5q1q35f4yE6Y.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'remotehost,192.168.11.99' (ECDSA) to the list of known hosts.

一般来说 SSH 端口默认是 22,如果远程主机因为安全等原因使用了其它端口,那么可以修改默认的端口进行连接:

ssh -p 2222 username@remotehost

远程运行程序

使用 SSH 登录后,可以选择在远程主机上运行应用程序.一个例子是启动编辑器来编辑所述主机上的特定文件.

ssh -t username@remotehost "vim ~/Documents/list.txtA"

每当你想从远程主机启动像 vim 这样的程序时,就需要-t选项.此参数用于强制伪终端分配.man page 指出,基于屏幕的程序,比如 vim,应该基于这个原因使用这个选项启动.如果缺少这一功能,一些终端应用程序可能无法正常运行.

运行 GUI 程序

SSH 还提供了一种启动 X11 GUI 程序的方法,如 Firefox 这类含有界面的程序,而不是纯文本程序.

ssh -X username@remotehost Firefox

-X参数简单地告诉远程主机,当接到命令时,允许连接的计算机通过外壳或其他方式启动 X 应用程序.

如果你遇到这个错误: `/usr/bin/xauth: timeout in locking authority file /home/yourhome/.Xauthority,那么你需要删除个人目录下的一些文件:rm -rf ~/.Xauthority-_`,再重新登录.*

使用公钥登陆

SSH 支持密码登陆,但是每次输入密码都非常麻烦,还好 SSH 支持公钥登陆,这时候我们需要做以下的操作:

  1. ssh-keygen命令生成自己机器上的公钥,过程中会有提示是否设置密码,如果登陆过程中不想输入密码就不用设置(一直回车到最后).结束后你会在你的个人目录下~/.ssh/生成两个文件id_rsa.pub(公钥)和id_rsa(私钥).
[user@remotehost ~]$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/user/.ssh/id_rsa.
Your public key has been saved in /home/user/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:90PUly/JUgYCPBDLr7oDKVFOaE8zujaJxWXvOflqHDc user@remotehost.com
The key's randomart image is:
+---[RSA 2048]----+
| .    o+... .    |
|..o+o. .o  . o  .|
|.=+oo.o  .  . +..|
|..+.  ..   . + o.|
|.oo. . oS . o + .|
|o=o   *.E. o . . |
|.... ..= .  o    |
|    ..o .    .   |
|    o+..         |
+----[SHA256]-----+
  1. 创建所有内容后,需要将身份文件中找到的密钥安装到远程计算机上:
ssh-copy-id -i ~/.ssh/id_rsa.pub user@remotehost

如果这些步骤执行正确,您应该能够通过 SSH 登录 PC,而无需提示输入密码.

如果不行的话需要再进行额外的配置:

  1. 编辑远程主机上的/etc/ssh/sshd_config,将以下注释前的#去掉:
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

然后重启服务:

# CentOS / RHEL / Fedora / Redhat
/etc/init.d/sshd restart

# 或者
service sshd restart

# 如果使用systemd
sudo systemctl restart sshd

引用

个人随笔记录,内容不保证完全正确,若需要转载,请注明作者和出处.