在Windows和Linux上连接SSH

在Windows管理Linux服务器时,常使用putty登陆ssh进行远程管理。
但如果你是使用Linux来连接SSH服务器时,putty就没法用了。
通常现在的Linux发行版都使用OpenSSH代替telnet、rsh等明文传输的终端服务。
以Ubuntu 10.04来说:
toddy@ubuntu:~/.ssh$ ssh -v
OpenSSH_5.3p1 Debian-3ubuntu4, OpenSSL 0.9.8k 25 Mar 2009
usage: ssh [-1246AaCfgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec]
           [-D [bind_address:]port] [-e escape_char] [-F configfile]
           [-i identity_file] [-L [bind_address:]port:host:hostport]
           [-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port]
           [-R [bind_address:]port:host:hostport] [-S ctl_path]
           [-w local_tun[:remote_tun]] [user@]hostname [command]


一、为什么要使用SSH连接
   传统的网络服务程序,如:ftp、pop和telnet在本质上都是不安全的,因为它们在网络上用明文传送口令和数据,别有用心的人非常容易就可以截获这些口令和数据。而且,这些服务程序的安全验证方式也是有其弱点的, 就是很容易受到“中间人”(man-in-the-middle)这种方式的攻击。

二、SSH的安全验证是如何工作的
  从客户端来看,SSH提供两种级别的安全验证。
  第一种级别(基于口令的安全验证)只要你知道自己帐号和口令,就可以登录到远程主机。所有传输的数据都会被加密, 但是不能保证你正在连接的服务器就是你想连接的服务器。可能会有别的服务器在冒充真正的服务器, 也就是受到“中间人”这种方式的攻击。
  第二种级别(基于密匙的安全验证)需要依靠密匙,也就是你必须为自己创建一对密匙,并把公用密匙放在需要访问的服务器上。 如果你要连接到SSH服务器上,客户端软件就会向服务器发出请求,请求用你的密匙进行安全验证。服务器收到请求之后, 先在你在该服务器的家目录下寻找你的公用密匙,然后把它和你发送过来的公用密匙进行比较。如果两个密匙一致, 服务器就用公用密匙加密“质询”(challenge)并把它发送给客户端软件。 客户端软件收到“质询”之后就可以用你的私人密匙解密再把它发送给服务器。
  用这种方式,你必须知道自己密匙的口令。但是,与第一种级别相比,第二种级别不需要在网络上传送口令。
  第二种级别不仅加密所有传送的数据,而且“中间人”这种攻击方式也是不可能的(因为他没有你的私人密匙)。 但是整个登录的过程可能需要10秒。

三、连接
使用第一种连接方式虽然简单,但在实际工作中由于不安全而用得很少。所以我们现在主要来看第二种连接方式。关于SSH服务器的配置网上可以找到大量的参考资料,这里我就不多说了。我这里主要说一下我在连接过程中遇到的问题。
1.分清密钥文件的格式
PuTTY采用的是*.ppk文件格式,里面的编码方式我就不是很清楚了
OpenSSH 使用的就是 OpenSSH 格式,因为其为脱离ssh的最早的SSH软件
ssh secure shell client 使用的是 IETF SECSH 格式

2.在Windows上使用
windows下使用putty远程连接,因为putty不能识别直接从服务器拷贝来的私钥,那么还需要下载一个工具将私钥的格式转化为putty使用
的格式。
工具名称:puttygen.exe
格式转换
1)、打开工具puttygen.exe --> Conversions --> Import Key
2)、选择从拷贝过来的私钥文件id_rsa
3)、Save private key 名字随便 例如ftpserver.ppk
测试:打开工具putty.exe
1)、Session --> Host Name (填写服务器地址或者域名)
2)、Connection --> SSH --> Auth (点Browse选择刚才经过格式转换的ftpserver.ppk)
3)、open

2.在Linux环境上使用
由于我们一般不会在Linux上使用Putty工具,因为一般Linux上都带有OpenSSH工具,我们可以直接使用这个client去连接。由于项目组里的授权文件都是windows下的*.ppk文件,当然无法直接使用,需要转换为openssh格式的文件
可以使用puttygen工具Load,它除了可以Load其本身格式的私钥外(.ppk),还可直接Load其他格式的私钥,并能自动识别以及可以转换成PuTTY格式密钥,比如OpenSSH的私钥
导出成功后,我在linux下使用openssh连接
ssh -l root xxx.xxx.xxx.xxx -i key_file

经过了上面这么多,问题的关键归结于几种格式的转换:
1. IETF SECSH -------------------------> OpenSSH
用OpenSSH的 ssh-keygen: $ ssh-keygen -i -f privatekey > newprivatekey

2. OpenSSH ----------------------------> IETF SECSH
用OpenSSH的 ssh-keygen: $ ssh-keygen -e -f privatekey > newprivatekey
用ssh2的 ssh-keygen2: $ ssh-keygen -x privatekey

3. PuTTY格式的转换:
使用puttygen.exe
3.1 其他两种格式 -----------------------> PuTTY格式
除了可以Load其本身格式的私钥外(.ppk),还可直接Load其他格式的私钥,并能自动识别以及可以转换成PuTTY格式密钥,比如OpenSSH的私钥
3.2 也可将PuTTY格式 --------------------> 其他两种格式

经过几天不断实验,终于弄清楚了其中关系
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值