查看“Ssh”的源代码
←
Ssh
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
==ssh访问时不需要输入密码,基本过程如下== *1.输入 ssh-keygen -t rsa 产生密钥,在提示保存私钥(key)和公钥(public key)的位置时,使用默认值。 如果需要私钥密码(passphrase),则输入一个私钥密码(如果使用私钥密码,使用 ssh 执行远程命令时需要输入私钥密码) 而既然我们的目的是不设密码访问,因此,直接回车即可。 *2.将该密钥附加到服务器端的.ssh目录下的 authorized_keys文件当中 如 ssh 202.127.29.3 cat ~/.ssh/id_rsa.pub >> authorized_keys *曾经出现过设置authorized_keys后访问仍然需要密码的现象。通过检查/var/log/secure现这是由于/home/shen的目录权限设置的原因,设置权限过高,改成755后才得以通过。类似的需要检查的是.ssh目录和authorized_keys的权限。 ==ssh的端口转发== ===绑定本地端口=== 既然SSH可以传送数据,那么我们可以让那些不加密的网络连接,全部改走SSH连接,从而提高安全性。 假定我们要让8080端口的数据,都通过SSH传向远程主机,命令就这样写: $ ssh -D 8080 user@host SSH会建立一个socket,去监听本地的8080端口。一旦有数据传向那个端口,就自动把它转移到SSH连接上面,发往远程主机。可以想象,如果8080端口原来是一个不加密端口,现在将变成一个加密端口。 ===本地端口转发=== 有时,绑定本地端口还不够,还必须指定数据传送的目标主机,从而形成点对点的"端口转发"。为了区别后文的"远程端口转发",我们把这种情况称为"本地端口转发"(Local forwarding)。 假定host1是本地主机,host2是远程主机。由于种种原因,这两台主机之间无法连通。但是,另外还有一台host3,可以同时连通前面两台主机。因此,很自然的想法就是,通过host3,将host1连上host2。 我们在host1执行下面的命令: $ ssh -L 2121:host2:21 host3 命令中的L参数一共接受三个值,分别是"本地端口:目标主机:目标主机端口",它们之间用冒号分隔。这条命令的意思,就是指定SSH绑定本地端口2121,然后指定host3将所有的数据,转发到目标主机host2的21端口(假定host2运行FTP,默认端口为21)。 这样一来,我们只要连接host1的2121端口,就等于连上了host2的21端口。 $ ftp localhost:2121 "本地端口转发"使得host1和host3之间仿佛形成一个数据传输的秘密隧道,因此又被称为"SSH隧道"。 ===远程端口转发=== 既然"本地端口转发"是指绑定本地端口的转发,那么"远程端口转发"(remote forwarding)当然是指绑定远程端口的转发。 还是接着看上面那个例子,host1与host2之间无法连通,必须借助host3转发。但是,特殊情况出现了,host3是一台内网机器,它可以连接外网的host1,但是反过来就不行,外网的host1连不上内网的host3。这时,"本地端口转发"就不能用了,怎么办? 解决办法是,既然host3可以连host1,那么就从host3上建立与host1的SSH连接,然后在host1上使用这条连接就可以了。 我们在host3执行下面的命令: $ ssh -R 2121:host2:21 host1 R参数也是接受三个值,分别是"远程主机端口:目标主机:目标主机端口"。这条命令的意思,就是让host1监听它自己的2121端口,然后将所有数据经由host3,转发到host2的21端口。由于对于host3来说,host1是远程主机,所以这种情况就被称为"远程端口绑定"。 绑定之后,我们在host1就可以连接host2了: $ ftp localhost:2121 这里必须指出,"远程端口转发"的前提条件是,host1和host3两台主机都有sshD和ssh客户端。 ==配置文件== 系统的配置文件在/etc/ssh/目录下,ssh_config(客户端)sshd_config(服务段) 客户端使用本地目录在.ssh/ssh_config 文件 ===/etc/ssh/ssh_config=== * Host * :选项“Host”只对能够匹配后面字串的计算机有效。“*”表示所有的计算机。 * ForwardAgent no :“ ForwardAgent”设置连接是否经过验证代理(如果存在)转发给远程计算机。 *ForwardX11 no :“ForwardX11”设置X11连接是否被自动重定向到安全的通道和显示集(DISPLAY set)。 *RhostsAuthentication no :“RhostsAuthentication”设置是否使用基于rhosts的安全验证。 *RhostsRSAAuthentication no “RhostsRSAAuthentication”设置是否使用用RSA算法的基于rhosts的安全验证。 *RSAAuthentication yes :“RSAAuthentication”设置是否使用RSA算法进行安全验证。 *PasswordAuthentication yes :“PasswordAuthentication”设置是否使用口令验证。 *FallBackToRsh no :“FallBackToRsh”设置如果用ssh连接出现错误是否自动使用rsh。 *UseRsh no :“UseRsh”设置是否在这台计算机上使用“rlogin/rsh”。 *BatchMode no :“BatchMode”如果设为“yes”,passphrase/password(交互式输入口令)的提示将被禁止。当不能交互式输入口令的时候,这个选项对脚本文件和批处理任务十分有用。 *CheckHostIP yes :“CheckHostIP”设置ssh是否查看连接到服务器的主机的IP地址以防止DNS欺骗。建议设置为“yes”。 *StrictHostKeyChecking no :“StrictHostKeyChecking”如果设置成“yes”,ssh就不会自动把计算机的密匙加入“$HOME/.ssh/known_hosts”文件,并且一旦计算机的密匙发生了变化,就拒绝连接。 *IdentityFile ~/.ssh/identity :“IdentityFile”设置从哪个文件读取用户的RSA安全验证标识。 *Port 22 :“Port”设置连接到远程主机的端口。 *Cipher blowfish :“Cipher”设置加密用的密码。 *EscapeChar ~ :“EscapeChar”设置escape字符。 ===/etc/ssh/sshd_config=== ===~/.ssh/config=== 上述的ssh -L 2010:192.168.200.110:23 命令可以在SSH的配置文件ssh_config 中加入LocalForward 2010:192.168.200.110:23 来实现。 ==通过中间主机建立SSH连接== ssh -t reachable_host ssh unreachable_hostUnreachable_host表示从本地网络无法直接访问的主机,但可以从reachable_host所在网络访问,这个命令通过到reachable_host的“隐藏”连接,创建起到unreachable_host的连接。 ==openssh 手工升级 == cd openssh-6.6p1 ./configure --prefix=/usr --sysconfdir=/etc/ssh --with-md5-passwords --with-privsep-path=/var/lib/sshd sudo make install
返回至“
Ssh
”。
导航菜单
个人工具
登录
命名空间
页面
讨论
大陆简体
已展开
已折叠
查看
阅读
查看源代码
查看历史
更多
已展开
已折叠
搜索
导航
首页
社群首页
最近更改
随机页面
帮助
工具
链入页面
相关更改
特殊页面
页面信息