Skip to main content

10.ssh基础用法

1什么是SSH?

SSH全名是Secure Shell。是个基于安全socket方式的shell,通俗讲就是在不安全的网络中也能安全连接远程主机的shell的工具。它的 安全实现实现原理采用了非对称加密方式,即本地私钥加密远程公钥解密反之远程公钥加密本地私钥解密,从而确保中间报文被监听也解密不了,从而保证其安全性。

2ssh-key生成密钥

如果采用密钥登录,那么就要在本地生成这么对公钥和私钥出来,公钥给远程主机使用,私钥自己用。

2.1 直接生成

$ ssh-key  
tip

运行上面的命令后,一路回车,就会在~/.ssh中生成一个id_rsaid_ras.pub前者是私钥后者反之。

2.2 配置项

$ man ssh-keygen 
ssh-keygen [-q] [-b bits] [-t dsa | ecdsa | ed25519 | rsa] [-N new_passphrase] [-C comment] [-f output_keyfile]
ssh-keygen -c [-P passphrase] [-C comment] [-f keyfile]
...

在这些选项中, 常用的有:

$ ssh-keygen -C "your_email@domain.com" # <-- 生成一个有注释的公私钥

公钥添加注释your_email@domain.com的注释

3上传公钥

上传公钥是用于后期的自动远程登录用的。

$ ssh-copy-id username@host

根据提示输入远程主机名,账户和密码,然后本地的is_ras.pub就会上传到对方的~/.ssh/authorized_keys中。 这样输入ssh username@host就自动登录到远程主机上,其原理是从本地用私钥加密个数字,然后远程主机则用已经上传过去的公钥解密,如果能解开则远程主机允许本次登录,双方基于非对称加密交换数据。

4 ~/.ssh/config的使用

~/.ssh/configssh连接远程主机的会话中起到了默认配置的作用。利用好它能提高些 itt

4.1 别名使用

另名能不用记住账号和主机名,通过别名主能登录了, 如把以下配置加入到~/.ssh/config

Host             alias
User username
Hostname ip
IdentityFile ~/.ssh/id_rsa
Port 22

然后:

$ ssh alias

就可以登录了

4.2 ssh保持连接

ssh如果连接后没有操作就会被防火墙断开,也为防止这种情况出现,以每隔一定的间隔时间向远程端发送空数据包来保持连接.在~/.ssh/config添加:

Host    *                #任何主机
ServerAliveInterval 60 #每60秒发送空数据包给远端
ServerAliveCountMax 3 #远端连续不响应3次,断开

或者在服务端口/etc/ssh/sshd_config ClientAliveInterval 300(默认0),区别于以上的是,这是从服务器发送心跳。 更多参考linux ssh_config和sshd_config配置文件学习

4.3 ssh终端僵死退出快捷键

ssh连接不加心跳,过一段时间会断开并僵死。按回车~.来退出。

4.4 把ssh会话切换回本地

当我们连接了远程主机时,需要临时把切换回本地操作,又不想断开远程的连接时,按~ CTRl+z 就可以回到本地并远程的连接作为后台任务隐藏起来。 当需要再次回来远程连接时,输入fgfg <任务>编号重新切换到连接会话。