介绍
SSH 是创建在应用层和传输层基础上的安全协议,为计算机上的 Shell(壳层)提供安全的传输和使用环境。
SSH 只是协议,有多种实现方式,本文基于其开源实现 OpenSSH
远程登录
SSH主要用于远程登录:
$ ssh user@host
当本地用户名和远程用户名一致时,可省略用户名:
$ ssh host
SSH 协议默认端口是22,指定端口可使用 -p 参数
$ ssh -p 2222 user@host
MITM
SSH 采用公钥加密的方式来保证传输安全。过程如下:
- 客户端发起登录请求,远程主机将自己的公钥发个用户;
- 客户端使用该公钥将登录密码加密后发送给远程主机;
- 远程主机使用私钥解密登录密码,如密码正确则允许客户端登录。
However!
- 由于 SSH 协议的公钥是自己签发的,并不像HTTPS 的SSL证书是有CA机构颁发的。如果有人插在用户与远程主机之间,截获登录请求,然后冒充远程主机,将伪造的公钥发给客户端,那么用户则很难辨别真伪。
- 这样就可以获取用户登录密码,用来登录远程主机。这就是MITM,(Man-in-the-middle attack,中间人攻击)
密码登录
第一次登录远程主机,会有如下提示:
$ ssh 10.0.0.12 The authenticity of host '10.0.0.12 (10.0.0.12)' can't be established. RSA key fingerprint is 3a:45:30:52:b5:ea:2a:55:e7:23:41:ef:16:76:0b:8d. Are you sure you want to continue connecting (yes/no)"htmlcode">Are you sure you want to continue connecting (yes/no)"htmlcode">Warning: Permanently added '10.0.0.12' (RSA) to the list of known hosts.然后提示输入密码:
root@10.0.0.11's password:输入密码正确,就可以正常登陆了。
当远程主机的公钥被接受以后,它就会被保存在文件$HOME/.ssh/known_hosts之中。下次再连接这台主机,系统会发现它的公钥已经保存在本地了,从而跳过警告部分,直接提示输入密码。
公钥登陆
除了密码登录,SSH 还支持公钥登录。
“公钥登录”原理是:用户将自己的公钥储存在远程主机上。登录的时候,远程主机会向用户发送一段随机字符串,用户用自己的私钥加密后,再发回来。远程主机用事先储存的公钥进行解密,如果成功,就证明用户是可信的,直接允许登录shell,不再要求输入密码。
公钥登录需要用户提供自己的公钥,一般保存在 $HOME/.ssh/ 目录下,id_rsa是私钥,id_rsa.pub是公钥。如果没有可以通过ssh-keygen生成。
$ ls -1 ~/.ssh id_rsa id_rsa.pub known_hosts需要把公钥发送到远程主机:
# ssh-copy-id [-i [identity_file]] [user@]machine $ ssh-copy-id root@10.0.0.12此后再登录就不需要输入密码了。
如果还是无法使用公钥登录,可以检查一下远程主机SSH配置/etc/ssh/sshd_config,打开如下注释并重启SSH服务[我发现CentOS release 6.8 (Final)默认SSH配置中注释掉以下内容也是可以使用公钥登录的]:
> #RSAAuthentication yes > #PubkeyAuthentication yes > #AuthorizedKeysFile .ssh/authorized_keys >authorized_keys文件
远程主机将用户的公钥,保存在 $HOME/.ssh/authorized_keys 中。公钥是一段字符串,也可以手动追加到远程主机authorized_keys文件中,每行一个。
也可以通过如下命令代替ssh-copy-id,解释公钥的保存过程:
$ ssh user@host 'mkdir -p .ssh && cat .ssh/authorized_keys' < ~/.ssh/id_rsa.pub远程操作
SSH可以用于直接在远程主机上操作
# 查看远程主机Nginx进程 ssh 10.0.0.12 'ps -ef | grep nginx'端口转发
本地转发
本地转发是指:把本地主机端口通过待登录主机端口转发到远程主机端口上去。
本地转发通过参数 -L 指定,格式: -L [本地主机:]本地主机端口:远程主机:远程主机端口
ssh -L 5000:www.google.com:80 user@host通过上面的命令,访问本地5000端口,相当于访问远程主机www.google.com的80端口,并且这是通过通过登录主机来安全地转发数据的。当不能直接访问远程主机某端口,而登录主机可以访问时,可以使用这种方式将远程主机端口绑定到本地。
远程转发
远程转发是指:把登录主机端口通过本地主机端口转发到远程主机.
远程转发通过参数 -R 指定,格式: -R 登录主机端口:远程主机:远程主机端口。
ssh -R 8080:localhost:80 user@host通过上面的命令,访问登录主机的 8080 端口就相当于访问 localhost:80!
例如下面这种场景:我在本机起了一个web服务,希望别人从外网访问或测试,但是外网是不能直接访问我的内网机器。所以我可以在本机上执行上面的命令,这样就就可以通过访问登录主机的80端口,来访问本机的80端口了,从而实现外网访问内网的应用了。简直太方便~
动态转发
动态转发不需要指定特定的目标主机和端口号,可以实现不加密的网络连接,全部走SSH连接,从而提高安全性。
例如把本地5000端口的数据,都通过SSH传向登录主机:
ssh -D 5000 user@host例如可以用于科学上网的场景,在浏览器中设置代理类型为 SOCKS(5),主机及端口为127.0.0.1:5000 就可以通过登录主机科学上网了。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
P70系列延期,华为新旗舰将在下月发布
3月20日消息,近期博主@数码闲聊站 透露,原定三月份发布的华为新旗舰P70系列延期发布,预计4月份上市。
而博主@定焦数码 爆料,华为的P70系列在定位上已经超过了Mate60,成为了重要的旗舰系列之一。它肩负着重返影像领域顶尖的使命。那么这次P70会带来哪些令人惊艳的创新呢?
根据目前爆料的消息来看,华为P70系列将推出三个版本,其中P70和P70 Pro采用了三角形的摄像头模组设计,而P70 Art则采用了与上一代P60 Art相似的不规则形状设计。这样的外观是否好看见仁见智,但辨识度绝对拉满。
更新日志
- 《最终幻想16》PC版震撼登场 官方发布精彩宣传片
- 《中国十大国语老歌.男人篇 3CD》[WAV/分轨][1.5GB]
- 《汽车音响极品流行热曲发烧大碟 情伤 男声篇2CD》[WAV/分轨][980MB]
- 《绝版经典情歌 国语老歌 内地珍藏篇 2CD》[WAV/分轨][1.2GB]
- 崩坏星穹铁道冬城史学家成就获得攻略
- 金铲铲之战符文大陆城邦效果分享 有哪些效果
- 仙境传说新启航单手斧流派技能流铁匠玩法介绍
- 归龙潮笼鸟意未平任务怎么完成 笼鸟意未平任务流程攻略
- 归龙潮长命锁指引任务怎么过 长命锁的指引前进任务攻略
- 归龙潮破败小屋密码是什么 尘封的记忆支线攻略
- 瑞鸣音乐《中国音乐地图之听见西藏HQCD》[WAV]
- 老虎鱼DavidMunyon-PrettyBlue-24bit44.1kHz[FLAC]
- 沈家凤《梦》[WAV分轨]
- 《黑神话:悟空》四妹游戏摄影:端庄冷艳未亡人气质拉满
- IGN评价PS5 Pro:卖得太贵、为顽固不化的PS粉丝准备的