`

<转>在 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/>
分享到:
评论

相关推荐

    How-to-install-ssh-on-ubuntu.rar_Ubuntu!_ubuntu ssh

    在Ubuntu系统上安装SSH(Secure Shell)是连接远程服务器、进行安全远程操作的重要步骤。SSH是一种网络协议,用于安全地远程登录到服务器,执行...通过这些步骤,你可以在本地和远程Ubuntu系统之间建立安全的通信通道。

    ganymed-ssh2-build210

    描述中提到的“Java在用ssh协议远程在linux目标主机上执行命令的架包”,意味着该库的主要功能之一就是允许开发者编写Java程序,通过SSH连接到Linux服务器,然后执行任意的shell命令。这在自动化运维、分布式系统...

    ssh整合适合新手

    8. **SSH通道**:SSH可以创建两种通道,Shell通道用于执行命令,SFTP通道用于文件传输。在Spring中,可以通过建立Session并创建相应通道对象来实现。 9. **安全管理**:定期更换SSH密钥,限制无效尝试次数,使用...

    SSH远程登录linux

    在Linux系统中,SSH是管理员和用户进行远程管理、文件传输等操作的常用工具。Windows用户通常会借助第三方软件来实现SSH连接,如本文提到的"SSHSecureShellClient-3.2.9.exe",这是一个SSH客户端软件,允许Windows...

    SSH Secure Shell.rar

    在本文中,我们将深入探讨SSH的工作原理、安装与配置、以及其在Linux系统管理中的应用。 **一、SSH工作原理** SSH通过公共密钥加密技术来确保通信的安全性。当用户尝试连接远程服务器时,服务器会提供一个公钥给...

    ssh环境搭建记录

    在Ubuntu或Debian系统中,可以使用`sudo apt-get install openssh-server`命令来安装SSH服务器。在CentOS或Fedora上,应使用`sudo yum install openssh-server`(对于较旧版本)或`sudo dnf install openssh-server...

    libssh2的ubuntu下编译so

    描述中提到"在ubuntu16.04下编译的libssh2的so文件,可以正常调用",这意味着在Ubuntu 16.04上成功编译出的libssh2动态库已通过验证,可以在运行时被其他应用程序正确地链接和使用,确保了其功能的完整性和稳定性。...

    SSH配置和经常出现的报错以及解决方法

    通过SSH,可以在两台远程机器之间建立一个安全的加密通道,从而实现安全的数据传输。SSH最常用的功能是远程登录服务,即用户可以通过网络登录到一台远程主机,如同直接在该主机上工作一样。 #### SSH的基本配置 1. ...

    mysql教程ssh配置

    SSH提供了一种安全的网络通信方式,可以让你通过加密的通道远程访问MySQL服务器,防止数据在传输过程中被窃取或篡改。下面将详细讲解如何进行MySQL教程中的SSH配置。 1. **SSH基础知识**: SSH是一种网络协议,...

    新手ssh小列子

    本地的SSH配置文件位于`~/.ssh/config`,在此文件中可以定制SSH的行为,例如指定默认主机、端口、用户等,简化命令行输入。 八、SSH安全最佳实践 1. 使用强密码或公钥认证,避免使用默认端口22,定期更新SSH版本以...

    ssh远程登录linux

    在Linux系统中,SSH是管理员和用户进行远程管理、文件传输等操作的常用工具。下面将详细介绍SSH远程登录Linux的基本概念、配置及使用方法。 1. SSH的基本原理 SSH通过加密通信通道,确保了数据传输的安全性。它使用...

    SSH SecureCRT介绍以及相关使用配置.docx

    在Ubuntu中安装SSH服务,通常使用`sudo apt-get install openssh-server`命令。OpenSSH服务器(SSHD)会监听网络,处理来自SSH客户端的连接请求。同时,OpenSSH客户端(openssh-client)也常被一同安装,以便进行...

    ubuntu安装与配置

    - **安装SSH**: 在Ubuntu中安装OpenSSH服务器组件。 - **配置SecureCRT**: 在Windows端配置SecureCRT客户端以连接Ubuntu。 - **共享通道**: - **安装Samba**: 安装Samba服务实现Ubuntu与Windows之间的文件共享。 ...

    ssh连接Linux的利器

    1. **安装与配置SSH**:在Linux系统中,SSH通常预装在服务器上,如果没有,可以通过包管理器(如`apt-get` for Debian/Ubuntu 或 `yum` for CentOS/RHEL)来安装。安装完成后,配置文件位于`/etc/ssh/sshd_config`,...

    SSH技术整合

    1. 安装SSH:在Linux系统中,可以通过包管理器如`apt-get`(Ubuntu/Debian)或`yum`(CentOS/RHEL)安装SSH服务器软件`openssh-server`。 2. 配置SSH:配置文件通常位于`/etc/ssh/sshd_config`,可以在此设置端口号...

    SSH环境搭建

    在IT领域,SSH环境的搭建是系统管理员和开发者的基本技能之一,它主要用于实现远程控制、文件传输等功能,尤其在Linux和Unix-like系统中广泛使用。本教程将详细介绍如何在不同的操作系统上搭建SSH环境。 **一、SSH...

    过rsync inotify-tools ssh实现触发式远程实时同步

    这里主要用于建立安全的连接通道,使 `rsync` 可以在两台服务器之间传输文件。 #### 三、安装所需软件 根据不同的 Linux 发行版,可以通过相应的包管理器来安装所需的软件。以下是一些常见的安装命令: - **RHEL/...

    Linux下建立SSHFS共享

    在使用SSHFS之前,你需要确保你的Linux系统与目标远程服务器之间已经建立了SSH信任关系。这通常意味着你需要在两台机器上交换公钥,以便实现无密码登录。可以通过以下步骤完成: 1. 在本地生成SSH密钥对(如果还...

    SSHSecureShell.zip

    例如,在Ubuntu/Debian上,可以使用以下命令安装SSH服务器(sshd)和客户端(ssh): ```bash sudo apt-get update sudo apt-get install openssh-server openssh-client ``` 安装完成后,SSH服务默认会在22端口...

    sshv2协议字段详解完全资料手册

    目前大多数 SSH 客户端和服务端程序同时支持两个版本,并能在连接建立时协商确定使用哪个版本。 #### 三、SSHv2 协议关键字段详解 SSHv2 协议的核心是其认证和连接建立机制,以下是一些关键字段的详细介绍: ####...

Global site tag (gtag.js) - Google Analytics