10.ssh基础用法
1什么是SSH?
SSH
全名是Secure Shell。是个基于安全socket
方式的shell
,通俗讲就是在不安全的网络中也能安全连接远程主机的shell
的工具。它的
安全实现实现原理采用了非对称加密方式,即本地私钥加密远程公钥解密反之远程公钥加密本地私钥解密,从而确保中间报文被监听也解密不了,从而保证其安全性。
2ssh-key生成密钥
如果采用密钥登录,那么就要在本地生成这么对公钥和私钥出来,公钥给远程主机使用,私钥自己用。
2.1 直接生成
$ ssh-key
tip
运行上面的命令后,一路回车,就会在~/.ssh
中生成一个id_rsa
和id_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/config
在ssh
连接远程主机的会话中起到了默认配置的作用。利用好它能提高些 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
就可以回到本地并远程的连接作为后台任务隐藏起来。
当需要再次回来远程连接时,输入fg
或fg <任务>
编号重新切换到连接会话。