陌生又熟悉的ssh命令

245 阅读2分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

现在无论是后端还是前段开发,都会接触到远程登录服务器,而登录就必然会用到ssh命令,无论是直接用命令行登录还是有一些第三方的图形界面,用的都是ssh命令,那么这个命令到底是什么来头呢?

首先SSH是Secure Shell的简写,中文全称叫做安全外壳协议,说人话就是一种安全的网络传输协议。我们常常用来远程登录服务器,在ssh之前也是其他程序可以用的,比如rlogin rsh等,但这些都是明文传输且使用了不可靠的密码,容易被监听和攻击。ssh安全的原理简单来说就是采用了非对称加密,本机保存一份私钥,目标服务端保存一份公钥,任何人都可以基于公钥生成一个私钥,整个认证过程中私钥不会传输到网络中,所以在绝大多数时候ssh是安全的。

那我们常常也会提到openSSH,这是基于ssh协议实现的一个程序,openSSH分为客户端和服务端两个部分,客户端提供了ssh连接的命令和配置,服务端用于在机器上安装以支持客户端的连接。下面看几个ssh命令的示例:

ssh root@10.18.2.155 # 以root身份登录远程机器
ssh root@10.18.2.155  -o stricthostkeychecking=no  # 首次登陆免输yes
ssh root@10.18.2.155  "ls /home/test" # 登录之后直接执行指定的命令

如果本机的公钥不在目标服务器,那每次执行以上的命令都需要输入密码,可以通过下面的命令copy本机的公钥到目标ip:

ssh-copy-id -i id_dsa.pub root@10.18.2.155