`

<转>在 Ubuntu 中建立 SSH 通道

ssh 
阅读更多
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/>
分享到:
评论

相关推荐

    Sams.Ubuntu.Unleashed.Aug.2006.part2

    Part I: Installation and Configuration&lt;br&gt; Chapter 1 Introducing Ubuntu&lt;br&gt; Chapter 2 Preparing to Install Ubuntu&lt;br&gt; Chapter 3 Installing Ubuntu&lt;br&gt; Chapter 4 Post-Installation Configuration&lt;br&gt; ...

    Python连连看

    Python连连看是nautilium朋友为了练习Python与wxPython而编写的一个小游戏。...&lt;br&gt;&lt;br&gt;&lt;br&gt; &lt;br&gt;安装步骤:&lt;br&gt;直接运行pyllk.py&lt;br&gt;&lt;br&gt; &lt;br&gt;测试环境:&lt;br&gt;Ubuntu Feisty&lt;br&gt;Windows XP&lt;br&gt;Windows Vista &lt;br&gt;

    Ubuntu 实用学习教程

    Ubuntu 实用学习教程&lt;br&gt;Ubuntu 是一个完全以 Linux 为基础的操作系统, 可自由的获得,并提供社区和专业的支持&lt;br&gt;。Ubuntu 宣言:软件应免费提供,软件工具应能以人们本地语种的形式可用且不牺牲任何功能,人们&lt;br&gt;...

    Ubuntu Linux Toolbox

    English&lt;br&gt;ISBN: 0470082933&lt;br&gt;Paperback: 332 pages&lt;br&gt;Data: November 28, 2007&lt;br&gt;Format: PDF&lt;br&gt;Description: Aimed squarely at aspiring Linux power users and professional administrators, the Ubuntu ...

    ubuntu离线安装包ssh-server.zip

    Ubuntu20.04离线安装openssh-server 安装步骤: sudo dpkg -i libssl1.0.0_1.0.2n-1ubuntu5.7_amd64.deb sudo dpkg -i openssh-...sudo dpkg -i ssh_8.4p1-6ubuntu1_all.deb 安装后执行: sudo service ssh restart

    JNI与C++数据类型传递示例(包括ArrayList对象、ArrayList嵌套返回)

    一个C++(Ubuntu16.04+QT5.9.1)通过JNI,调用JAVA类及方法的示例。通过JNI传递和返回多种类型的参数,boolean ,int,String,ArrayList&lt;string&gt;,ArrayList嵌套ArrayList&lt;ArrayList&lt;String&gt;&gt;等。

    readline-5.2.tar.gz

    Linux上使用SQL*Plus有一个相当...&lt;br&gt;答案是安装一个小工具:Uniread&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;安装Uniread的要求&lt;br&gt;&lt;br&gt;1.Linux系统上必须已经安装了Perl&lt;br&gt;2.安装Uniread之前先安装 readline,Term,IO这3个工具。&lt;br&gt;

    Ubuntu 下使用QT开发的串口程序

    1. 使用QT开发的简易串口程序 2. 使用socat 虚拟串口,可在linux系统下测试。

    Ubuntu14.04离线安装ssh所需安装包deb

    1.按以下顺序执行安装 ...sudo dpkg -i ssh_6.6p1-2ubuntu1_all.deb 2.安装后输入以下命令:ps -e|grep sshd 若看到sshd,就说明ssh-server已经启动了。 若未启动,尝试以下命令:/etc/init.d/ssh start

    ubuntu open ssh 离线安装包

    1.将4个文件放在一个单独的文件夹中,建议新建一个 2.命令行进入该文件夹 cd [你的新建文件夹] 3.执行 sudo dpkg -i openssh-client_7.2p2-4_amd64.deb sudo dpkg -i openssh-sftp-server_7.2p2-4_amd64.deb ...

    ubuntu20.04离线安装ssh-server安装包

    sudo dpkg -i libssl1.0.0_1.0.2n-1ubuntu5.7_amd64.deb sudo dpkg -i openssh-client_8.4p1-6ubuntu1_amd64.deb sudo dpkg -i openssh-sftp-server_8.4p1-6ubuntu1_amd64....sudo dpkg -i ssh_8.4p1-6ubuntu1_all.deb

    MyDiskTest扩容检测

    第一款真正意义上的U盘扩容检测工具&lt;br&gt;&lt;br&gt;MyDiskTest是一款U盘/SD卡/CF卡等移动存储产品扩容识别工具。可以方便的检测出存储产品是否经过... &lt;br&gt;声明:&lt;br&gt;在检测前请自行备份U盘/SD卡内的文件资料,以防数据丢失。

    ubuntu ssh 离线安装包

    ubuntu 16.04 版本的openssh 离线安装包,dpkg -i 指令安装即可

    ubuntu 20.04 ssh离线安装包

    ssh离线安装包,dpkg -i *.deb

    Ubuntu手工安装SSH软件及说明

    Ubuntu手工安装SSH. 网上找的文档中有要安装的软件以及说明文档。Ubuntu手工安装SSH. 网上找的文档中有要安装的软件以及说明文档。Ubuntu手工安装SSH. 网上找的文档中有要安装的软件以及说明文档。

    ubuntu下开启ssh服务

    非常详细的讲解ubuntu下开启ssh服务。百分之百开启。借鉴很多人,做出最优的傻瓜配置

    搭建属于自己的linux

    在真实的linux系统上搭建自己的linux系统文档,如在ubuntu上搭建自己的linux时,在安装tcl时configure会出错,解决方法(&lt;br&gt;打开configure{&lt;br&gt;2134行System=MP-RAS-'awk'{print}'/etc/.rclid"&lt;br&gt;7325行System=MP-RAS-...

    Ubuntu 20.04.1安装ssh离线资源包

    Ubuntu 20.04.1安装ssh离线资源包

    ubuntu14.04 ssh离线安装包

    1.按以下顺序执行安装 ...sudo dpkg -i ssh_6.6p1-2ubuntu1_all.deb 2.安装后输入以下命令:ps -e|grep sshd 若看到sshd,就说明ssh-server已经启动了。 若未启动,尝试以下命令:/etc/init.d/ssh start

Global site tag (gtag.js) - Google Analytics