设为首页 收藏本站
查看: 341|回复: 0

[经验分享] <转>在 Ubuntu 中建立 SSH 通道

[复制链接]

尚未签到

发表于 2016-4-21 07:31:18 | 显示全部楼层 |阅读模式
1. 开始 SSH 连接
1.1 什么是 SSH 连接?
所谓 SSH, 即是指 Secure Sehll Protocal, 安全壳协议. 按我的理解, 这玩意儿的主要作用就是通过在本地主机与远程服务器之间建立一个安全的隧道, 从而实现安全的数据交换. 当这个加密的安全通道建立后, 我们就可以好好地利用他了~

1.2 通过终端建立 SSH 连接
Bash 内建了 ssh 命令来建立隧道. 首先, 打开终端, 输入命令:

$ ssh -D 7070 user@hostname.com
接着会出现一些信息, 然后会提示输入你的 SSH 帐户登录密码.
敲完密码, 回车确认后, 就建立起了 SSH 通道.

注意: 上面命令中的 “-D” 表示指定端口, 这里我使用本地的 7070 端口来与远程服务器建立通信. 更多的信息, 请使用 ‘man ssh’ 或者 ‘ssh –help’ 来查看.

1.3 通过图形化软件建立 SSH 连接
我刚开始上手 Ubuntu 时, 完全不懂 bash 操作. 去找了一款名为 gstm 的 SSH 图形工具, 以备急用. 要安装他, 可以先按 Alt + F1 呼出 Applications 菜单, 选择最后的 Ubuntu Sofware Center, 然后输入 gstm:

接着选中搜索结果, 点击 “Install”.
安装完成后, 在 Applications 的 Internet 项中可以找到他. 运行后界面如下所示:


gstm 提供的功能十分简单. 选择”Add”可以新增一个 SSH 帐户. 输入一个自己喜欢的名称后, 来到详细配置界面:

需要填写的, 就是 Login 与 Host. 前者是 SSH 的用户名, 后者是 SSH 连接的远程服务器.
搞定后, 点击 “OK” 就可以了. 注意如果希望选择某个指定的端口来建立通信, 可以在 Port redirection 中点击 “Add”, 然后在弹出的对话框中将 Type 选择为 local, 并填入相应的 Port, 最后点击 “OK”.
最后, 将 gstm 设置为随机启动, 就大功告成了.
选择 System, 在弹出的菜单中依次选择 Preference -> Startup Applications. 在弹出的对话框中选中 Startup Programs, 选择右则的 “Add”, 然后填入相应的项, 选择 “Add” 即可.


2. 建立 SSH 时避免重复输入密码, 实现无密码登录
现在我们可以轻松建立 SSH 连接了. 但是, 不管是命令行方式, 还是使用 gstm, 每次连接都需要输入密码, 太过麻烦. 特别是在使用类似于 scp 传输多个文件时, 更是烦得要死. 有没有办法可以即保正 SSH 的安全性, 又免于重复输入密码呢?
SSH 协议有想到这个问题. 所以除了传统的密码验证, SSH 又提供了使用密钥对来验证身份的方案. 所谓密钥对验证, 按我不专业的解释, 就是在本地生成一对密钥兄弟, 大哥是公钥, 小弟是私钥. 然后将大哥上传到远程服务器, 小弟则留守本地.
使用时, 远程服务器会首先生成一串随机数, 由大哥进行加密, 再将密文发送到本地. 留在本地的小弟拿到密文后, 用之前和大哥约定好的方法将其解密, 再将明文返回到服务器. 服务器一看, 哟, 解密正确, 于是验证成功. 由于公钥与私钥之间的解密方式是唯一的, 所以这种验证方式不仅可靠, 也避免了每次登录都重复输入密码.

Ubuntu 下内置了 SSH 密钥对的生成工具 ssh-keygen. 在 bash 中输入:

$ ssh-keygen -t rsa
参数 “-t” 是指密钥对的加密方式, 这里选择 RSA 算法. 除此之外还可以选择 SSH2 支持的 DSA 算法. 两种算法对于 SSH 密钥对的生成没有什么影响. 然后会出现如下提示:

Enter passphrase (empty for no passphrase):
这里需要输入的不是 SSH 登录密码, 而是用于加密小兄弟私钥的密码 — 很显然, 在密钥对验证中, 私钥无疑相当于自己的密码, 需要妥善保管. 这里就是设置一个密码来保护私钥. 以免私钥落入亡我之心不死的坏人手中, 造成极其巨大的影响. 当然了, 我们也可以选择不输入, 继续回车, 这就完成密钥创建了.

创建成功后, 可以进入 ~/.ssh 里看刚生成的密钥对. 其中 id_rsa 是保管私钥的地方, id_rsa.pub 就是公钥了. 接下来需要更改一下本地 .ssh 与远程服务器的 .ssh 文件夹权限. 这步相当重要.

chmod 755 .ssh // 将本地 .ssh 的权限设为 755
chmod 600 id_rsa // 将本地 .ssh 中的 id_rsa(私钥)的权限设为 600
更改权限后, 将公钥放到服务器上并修改权限, 就大功告成啦!
在 bash 中使用 scp 复制文件到远程服务器并重命名为 authorized_keys:

scp ~/.ssh/id_rsa.pub user@hostname.com:~/.ssh/authorized_keys
chmod 755 .ssh // 和本地一样的权限
chmod 644 authorzide_keys // 将公钥权限设为 644 即可.
大功告成! 再也不用输入烦人的密码了.

3. 进阶: 使用 ssh-agent
现在不需要输入密码即可建立 SSH 连接了. 但还是有例外 — 如果我们刚才设置了私钥的密码, 那么在每次连接时, 仍然需要输入私钥密码. 不设置的话, 似乎又觉得不大稳妥. 我在网上找到一篇教程, 使用 ssh-agent 似乎可以解决这个问题.
它的原理大概是, 在首次输入私钥的密码后, ssh-agent 会将密码保存在缓存中, 而在以后就不用再次输入密码了. 但当 bash 结束后再次启动, 则还是会提示输入一次密码 — 这也算是一个折衷的方案了吧.
不过我也没有真正使用过这个工具, 如果对此有兴趣, 可以移步到这里学习.

原链接<http://uxat.me/2011/03/ubuntu-ssh/>

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-206700-1-1.html 上篇帖子: Ubuntu下使用RVM 安装Rails 下篇帖子: UBUNTU下的ANDROID开发环境搭建
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表