什么是SSH

摘自monn-soft

传统的网络服务程序,如:ftp、pop和telnet在本质上都是不安全的,因为它们在网络上用明文传送口令和数据,别有用心的人非常容易就可以截获这些口令和数据。而且,这些服务程序的安全验证方式也是有其弱点的,就是很容易受到“中间人”(man-in-the-middle)这种方式的攻击。所谓 “中间人”的攻击方式,就是“中间人”冒充真正的服务器接收你的传给服务器的数据,然后再冒充你把数据传给真正的服务器。服务器和你之间的数据传送被“中间人”一转手做了手脚之后,就会出现很严重的问题。

SSH的英文全称是Secure SHell。通过使用SSH,你可以把所有传输的数据进行加密,这样“中间人”这种攻击方式就不可能实现了,而且也能够防止DNS和IP欺骗。还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。SSH有很多功能,它既可以代替telnet,又可以为ftp、pop、甚至ppp提供一个安全的“通道”。

最初SSH是由芬兰的一家公司开发的。但是因为受版权和加密算法的限制,现在很多人都转而使用OpenSSH。OpenSSH是SSH的替代软件,而且是免费的,可以预计将来会有越来越多的人使用它而不是SSH。

SSH是由客户端和服务端的软件组成的,有两个不兼容的版本分别是:1.x和2.x。用SSH 2.x的客户程序是不能连接到SSH 1.x的服务程序上去的。OpenSSH 2.x同时支持SSH 1.x和2.x。

SSH的安全验证是如何工作的
从客户端来看,SSH提供两种级别的安全验证。

第一种级别(基于口令的安全验证)只要你知道自己帐号和口令,就可以登录到远程主机。所有传输的数据都会被加密,但是不能保证你正在连接的服务器就是你想连接的服务器。可能会有别的服务器在冒充真正的服务器,也就是受到“中间人”这种方式的攻击。

第二种级别(基于密匙的安全验证)需要依靠密匙,也就是你必须为自己创建一对密匙,并把公用密匙放在需要访问的服务器上。如果你要连接到SSH服务器上,客户端软件就会向服务器发出请求,请求用你的密匙进行安全验证。服务器收到请求之后,先在你在该服务器的家目录下寻找你的公用密匙,然后把它和你发送过来的公用密匙进行比较。如果两个密匙一致,服务器就用公用密匙加密“质询”(challenge)并把它发送给客户端软件。客户端软件收到“质询” 之后就可以用你的私人密匙解密再把它发送给服务器。

用这种方式,你必须知道自己密匙的口令。但是,与第一种级别相比,第二种级别不需要在网络上传送口令。

第二种级别不仅加密所有传送的数据,而且“中间人”这种攻击方式也是不可能的(因为他没有你的私人密匙)。但是整个登录的过程可能需要10秒。

安装并测试OpenSSH
因为受到美国法律的限制,在很多Linux的发行版中都没有包括OpenSSH。但是,可以从网络上下载并安装OpenSSH(有关 OpenSSH的安装和配置请参考:http: //www.linuxaid.com.cn/engineer/brimmer/html/OpenSSH.htm)。

安装完OpenSSH之后,用下面命令测试一下:

ssh -l [your accountname on the remote host] [address of the remote host]

如果OpenSSH工作正常,你会看到下面的提示信息:

The authenticity of host [hostname] can't be established.
Key fingerprint is 1024 5f:a0:0b:65:d3:82:df:ab:44:62:6d:98:9c:fe:e9:52.
Are you sure you want to continue connecting (yes/no)?

OpenSSH告诉你它不知道这台主机,但是你不用担心这个问题,因为你是第一次登录这台主机。键入“yes”。这将把这台主机的“识别标记”加到“~/.ssh/know_hosts”文件中。第二次访问这台主机的时候就不会再显示这条提示信息了。

然后,SSH提示你输入远程主机上你的帐号的口令。输入完口令之后,就建立了SSH连接,这之后就可以象使用telnet那样使用SSH了。

[@more@]

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10599713/viewspace-980908/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/10599713/viewspace-980908/

### SSH 密钥的概念 SSH(Secure Shell)密钥是一种用于身份验证的加密机制,常用于安全地连接到远程服务器或版本控制系统(如 Git)。SSH 密钥由一对密钥组成:**公钥**和**私钥**。公钥可以被添加到远程服务器(如 GitHub、GitLab),而私钥则保留在本地设备上,作为身份验证的凭证。使用 SSH 钥可以避免在每次操作 Git 时输入用户名和密码,提高安全性和便利性。 SSH 密钥的使用在 Git 操作中尤为常见,特别是在克隆、推送或拉取私有仓库时,确保只有授权用户才能访问相关资源。 ### 在 Android Studio 中使用 SSH 密钥 Android Studio 支持通过 SSH 协议与 Git 仓库进行交互,但需要正确配置 SSH 可执行文件路径和密钥文件。在 Mac 环境中,如果默认使用 Android Studio 内置的 SSH 工具(Build-in),可能会导致无法识别系统全局配置的 SSH 密钥,从而无法完成 Git 操作 [^1]。 为了解决这一问题,需要将 Android Studio 中的 SSH 可执行文件设置为 `Native`,以便使用系统默认的 SSH 配置路径(如 `~/.ssh/id_rsa` 和 `~/.ssh/id_rsa.pub`)。配置路径如下: ``` Settings > Version Control > Git > SSH executable ``` 将其设置为 `Native` 后,Android Studio 将调用系统自带的 SSH 工具链,使用全局配置的 SSH 密钥进行身份验证 [^1]。 ### 生成和添加 SSH 密钥 在本地生成 SSH 密钥可以通过以下命令完成: ```bash ssh-keygen -t rsa -b 4096 -C "your_email@example.com" ``` 该命令将生成一对 RSA 密钥,私钥默认保存在 `~/.ssh/id_rsa`,公钥保存在 `~/.ssh/id_rsa.pub`。 生成完成后,将公钥内容复制并添加到 GitHub 账户的 SSH 密钥管理页面: ```bash pbcopy < ~/.ssh/id_rsa.pub ``` 随后登录 GitHub,进入 **Settings > SSH and GPG keys > New SSH key**,粘贴公钥并保存。 完成上述步骤后,可通过以下命令测试 SSH 连接: ```bash ssh -T git@github.com ``` 如果配置正确,系统将返回类似 `Hi username! You've successfully authenticated...` 的提示,表示 SSH 密钥已成功配置并可用于 Git 操作。 ### 验证 Android Studio 中的 SSH 配置 在 Android Studio 中克隆仓库时,选择 SSH 协议(如 `git@github.com:username/repo.git`),如果 SSH 配置正确,将无需输入用户名和密码即可完成克隆操作。若仍提示权限问题,应检查 SSH 密钥是否已正确添加到 `~/.ssh/` 目录,并确认 Android Studio使用的是 `Native` 模式下的 SSH 配置 。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值