SSH原理与运用


什么是SSH?

简而言之,SSH 是一种网络协议,这里借用百度解释 ,SSH 为 secure shell 的简写,翻译过来呢就是安全外壳, 是较可靠的一种专为远程登录会话和其他网络服务提供安全性的协议,主要用于防止一些远程管理过程中的信息泄漏。其实吧,SSH只是一种协议,存在多种实现,而这里讲的是OpenSSH,也是目前Linux系统的标准配置,SSH的一个开源实现。

原理

SSH目前用的最多的就是远程登录,也就是计算机之间的远程操作。
Linux 命令行操作如下:

$ ssh -p port username@host

SSH保证安全的机制在于其登录机制:

1. 密码登录(口令登录)

如果是第一次登录该主机:

$ ssh -p 22 username@host
The authenticity of host 'host (xx.xx.xxx.xx)' can't be established.

RSA key fingerprint is .......

Are you sure you want to continue connecting (yes/no)?

意思就是,无法确认该主机的身份,然后显示出它的 RSA 公钥指纹,是否继续链接?
如果 yes,那么系统就会将该 host 主机认可,存入到已知主机列表里,之后再输入密码,即可登录。
这里的公钥指纹,便是辨识该主机的标志,这里的 RSA 公钥指纹,便是利用 RSA 算法处理后(长度较长,1024位),再进行 MD5 计算后得到的,128位指纹(更利于比对)。

host 主机被认可,其公钥会被存储在 ~/.ssh/known_hosts 中,下一次登录时,系统会从该文件中识别出该主机,不会再次警告,直接输入密码即可。
同时,主机的 /etc/ssh/ 中还会存储 host_key ,即一些已经识别的可信赖的主机公钥。

2. 公钥登录

当然,密码登录(口令登录),比较麻烦。所以就提供了公钥登录,原理也很简单,也就是公钥加密原理的一些应用:
localhost (本地主机)生成公钥,远程存储在 host(远程主机) 上,当 localhost 需要远程登录 host 时,host 会发送一段随机字符串返回给 localhost,localhost 利用自己的私钥加密后,再返回给 host,host 利用存储的 localhost 公钥解密,解密结果 与原发送字符串结果相同,则认可 localhost 身份,则可直接登录,不需要密码。

注:私钥加密后,只能由公钥解密出,这是一个利用 hash 的加密过程,不可逆。

ssh 公钥是需要生成的:

ssh-keygen

这段命令会在 ~/.ssh 文件夹中生成 id_rsa.pub 和 id_rsa 密钥,即你的 ssh 公钥 和 私钥。
然后就是远程传输:(这个是需要密码登录的)

ssh-copy-id username@host

然后再次输入一次密码。
下次就是免密登录啦。

ssh username@host

有些时候没有成功的原因是一些权限问题,需要在远程主机上,授予权限 chmod 600 authorized_keys, chmod 700 ~/.ssh

还有不行,就是 远程主机配置文件 /etc/ssh/sshd_config 将 :

  RSAAuthentication yes
  PubkeyAuthentication yes
  AuthorizedKeysFile .ssh/authorized_keys

这几个生效就行,(去注释 #)。
记得重启一下

service sshd restart

3. 补充

也许你在搜索 ssh 公钥登录的时候,也会看到这样一串命令:

$ ssh username@host 'mkdir -p .ssh && cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub

解释一下,
请求登录到远程主机

ssh username@host 

登录主机后的命令,主目录下 .ssh 不存在则创建,同时(&& 后面的)将本地公钥 ~/.ssh/id_rsa.pub 重定向追加到 .ssh/authorized_keys 中。

'mkdir -p .ssh && cat >> .ssh/authorized_keys'< ~/.ssh/id_rsa.pub

以上就是 ssh-copy-id 的原理。也就是公钥远程设置的原理。


另外涉及的一些 公钥私钥,RSA 等原理,会在后面写新的,(毕竟才学了,记录一下,小声嘀咕)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值