一:Ssh远程登录服务
介绍:SSH 是创建在应用层和传输层基础上的安全协议,为计算机上的 Shell(壳层)提供安全的传输和使用环境。
远程登录:ssh服务主要应用于远程登录
命令如下:
ssh [user@]host [COMMAND] ssh [-l user] host [COMMAND] -p port:远程服务器监听的端口 -b:指定连接的源IP -v:调试模式 -C:压缩方式 -X: 支持x11转发 -Y:支持信任x11转发 ForwardX11Trusted yes -t: 强制伪tty分配 ssh -t remoteserver1 ssh remoteserver2
SSH 采用公钥加密的方式来保证传输安全。过程如下:
1.客户端发起登录请求,远程主机将自己的公钥发个用户;
2.客户端使用该公钥将登录密码加密后发送给远程主机;
3.远程主机使用私钥解密登录密码,如密码正确则允许客户端登录。
两种登录方式:密码登录 公钥登录
1.密码登录:
当我们第一次登录某台主机是会有如下提示:
提示我们是否接受对方公钥,来继续连接。(公钥:公钥采用RSA算法,长度较长难以比对,所以对其进行MD5计算,得到128位的指纹,即上例中的3a:45:30:52:b5:ea:2a:55:e7:23:41:ef:16:76:0b:8d)
输入yes后,提示我们输入密码。
输入正确后,登陆成功。终端切换成对方主机
当远程主机的公钥被接受以后,它就会被保存在文件$HOME/.ssh/known_hosts之中。下次再连接这台主机,系统会发现它的公钥已经保存在本地了,从而跳过警告部分,直接提示输入密码。
2.公钥登录:
“公钥登录”原理是:用户将自己的公钥储存在远程主机上。登录的时候,远程主机会向用户发送一段随机字符串,用户用自己的私钥加密后,再发回来。远程主机用事先储存的公钥进行解密,如果成功,就证明用户是可信的,直接允许登录shell,不再要求输入密码。
公钥登录需要用户提供自己的公钥,一般保存在 $HOME/.ssh/ 目录下,id_rsa是私钥,id_rsa.pub是公钥。如果没有可以通过ssh-keygen生成。
公钥发送过去后,此后登录就不需要密码了。
远程主机将用户的公钥,保存在 $HOME/.ssh/authorized_keys 中。公钥是一段字符串,也可以手动追加到远程主机authorized_keys文件中,每行一个。
二:远程转发
本地转发
本地转发是指:把本地主机端口通过待登录主机端口转发到远程主机端口上去。
本地转发通过参数 -L 指定,格式: -L [本地主机:]本地主机端口:远程主机:远程主机端口
示例
ssh –L 9527:telnetsrv:23 -N sshsrv
telnet 127.0.0.1 9527
当访问本机的9527的端口时,被加密后转发到sshsrv的ssh服务,再解密被转
发到telnetsrv:23
远程转发
远程转发是指:把登录主机端口通过本地主机端口转发到远程主机.
远程转发通过参数 -R 指定,格式: -R 登录主机端口:远程主机:远程主机端口
示例:
ssh –R 9527:telnetsrv:23 –N sshsrv
让sshsrv侦听9527端口的访问,如有访问,就加密后通过ssh服务转发请求到本
机ssh客户端,再由本机解密后转发到telnetsrv:23
动态转发
动态转发不需要指定特定的目标主机和端口号,可以实现不加密的网络连接,全部走SSH连接,从而提高安全性。