Windows使用SSH Secure Shell实现免密码登录Linux的方法以及使用scp2命令免密码下载文件

原创 2016年02月17日 23:12:54

1.   环境信息

SSH Secure Shell Client所在的操作系统:

Windows7

 

Linux服务器以及SSH的版本:

[hadoop@gpmaster ~]$ cat /etc/redhat-release

Red HatEnterprise Linux Server release 6.0 (Santiago)

 

[hadoop@gpmaster ~]$ ssh -V

OpenSSH_5.3p1, OpenSSL 1.0.0-fips 29 Mar 2010

默认各种版本的Linux或Unix操作系统都会安装好SSH服务的。

 

2.   Windows 7上面安装SSH客户端

登陆网址:http://ultra.pr.erau.edu/~jaffem/tutorial/SSH_secure_shell_client.htm

具体的下载地址为:

http://ultra.pr.erau.edu/~jaffem/classes/SSHSecureShellClient-3.2.9.exe

当然你也可以从http://www.ssh.com/上面下载。

 

下载的文件是一个exe可执行文件。SSH Secure Shell安装很简单,和一般windows软件安装没有区别,这里就不介绍了。

3.   免密码登录的原理

大家如果熟悉Linux的话,应该知道SSH服务中有公钥和私钥的概念。

Public Key是指公钥,而Private Key是指私钥。

认证的过程如下:

Public Key对数据进行加密而且只能用于加密,Private Key也只能对所匹配的Public Key加密过的信息进行解密。

如果我们把Windows上面生成的Public Key放到Linux服务器上指定用户家目录下面的.ssh目录中,并添加公钥内容到.ssh目录下面的authorized_keys文件。

如果我们开始从Windows(客户端)上面通过ssh方式远程Linux(服务器)时,此时客户端软件就会向服务器发出请求,请求用密匙进行安全验证。服务器收到请求之后,先在该服务器上的主目录下寻找公匙,然后把它和发送过来的公匙进行比较。如果两个密匙一致,服务器就用公匙加密“质询”并把它发送给客户端软件。客户端软件收到“质询”之后就可以用私匙解密再把它发送给服务器,此时因为密钥能匹配上,所以可以直接登录到Linux服务器。

4.   在Windows本机上生成密钥

首先找到SSH SecureShell的安装路径,比如我安装的路径指定为:

D:\SSHCommunications Security\SSH Secure Shell

我们可以通过dos命令在生成密钥,如下:

步骤一,进入dos界面

C:\Users\Administrator>

步骤二,进入SSH SecureShell安装路径:

C:\Users\Administrator>D:

D:\>cd D:\SSH Communications Security\SSH Secure Shell

D:\SSHCommunications Security\SSH Secure Shell>

步骤三,执行生成密钥的命令:

D:\SSHCommunications Security\SSH Secure Shell>ssh-keygen2-t rsa

注释:我们这里使用rsa的密钥,默认是2048bit(位),同样我们也可以使用dsa方式的密钥。

在执行ssh-keygen2 -t rsa生成密钥对时,会提示你输入Passphrase的值,我们要求免密码登录服务器,所以直接回车。 命令执行过程如下:

D:\SSH Communications Security\SSH Secure Shell>ssh-keygen2 -t rsa

Generating 2048-bit rsa key pair

   3 o..oOo.oOo.o

Key generated.

2048-bit rsa, Administrator@USER-20150414LO, Wed Feb 172016 13:34:16

Passphrase :

Again      :

Key is stored with NULL passphrase.

 (You can ignorethe following warning if you are generating hostkeys.)

 This is notrecommended.

 Don't do thisunless you know what you're doing.

 If file systemprotections fail (someone can access the keyfile),

 or if thesuper-user is malicious, your key can be used without

 the decipheringeffort.

Private key saved to C:/Users/Administrator/ApplicationData/SSH/UserKeys/id_rsa

_2048_a

Public key saved to C:/Users/Administrator/ApplicationData/SSH/UserKeys/id_rsa_

2048_a.pub

根据提示知道了生成的密钥对的路径,但是经过我实际查找,我的windows环境的密钥对位于:C:\Users\Administrator\AppData\Roaming\SSH\UserKeys下面。

 

5.   使用SSH客户端免密码登录到远程Linux服务器的hadoop用户下

1)   我们先用输入密码的方式登录到Linux服务器的hadoop用户下,然后在hadoop用户的家目录下面创建.ssh用户(如果已经存在就不需要创建):

[hadoop@gpmaster.ssh]$ pwd

/home/hadoop/.ssh

 

并在/home/hadoop/.ssh下面创建authorized_keys文件(如果已经存在就不需要创建)

2)   然后我们将Windows的C:\Users\Administrator\AppData\Roaming\SSH\UserKeys目录下的id_rsa_2048_a.pub文件上传到Linux服务器的hadoop用户的/home/hadoop/.ssh目录下面。

3)   如果是Linux之间信任关系,就直接将公钥的内容添加到authorized_keys文件中即可。但是这里因为我们的公钥是在Windows上面生成的,Linux的Openssh不识别,所以需要进行转换后再追加到authorized_keys中:

[hadoop@gpmaster.ssh]$ ssh-keygen -i -f id_rsa_2048_a.pub >>authorized_keys

 

4)   退出之前使用密码登录的SSH Secure Shell客户端,然后重新登录并在登录认证状态栏中选择Public Key方式,这样就可以免密码登录了。

6.   使用SSH Secure Shell客户端自带的scp2命令下载Linux服务器的文件

D:\SSH Communications Security\SSHSecure Shell>scp2.exe -r -d hadoop@192.168.1.128:/home/hadoop/testhivedataD:\test\

.000000_0.crc                          |   12B |  12B/s | TOC: 00:00:01 | 100%

000000_0                               |   96B |  96B/s | TOC: 00:00:01 | 100%

datacity.txt                           |  95kB | 95kB/s | TOC: 00:00:01 | 100%

可以看出远程拷贝也不需要输入密码。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

python监控脚本的编写

近来在学习用Python进行一些电脑运维的工作。抱歉我还是大学生其实也谈不上工作,只能说作为学习。Python无可否认是一门很吸引人的语言。运维首先需要对物理机进行监控。物理机资源包括的主要有内存,C...

Spring学习之boot(1)

Spring boot 可以提升开发效率简化spring.xml配置文件首先是一个helloworld 小例子: package web.app.test.boot; import java.ut...
  • shasiqq
  • shasiqq
  • 2016年04月25日 17:37
  • 383

Linux SSH免密码登录与拷贝文件(SCP)

原文链接:http://blog.csdn.net/xyang81/article/details/51477925在工作当中经常会登录远程服务器安装软件、部署应用或者拷贝文件到远程服务器上,都会提示...
  • xyang81
  • xyang81
  • 2016年05月23日 00:02
  • 7314

linux中ssh使用rsa免密码登录方法

A为本地主机(即用于控制其他主机的机器) ; B为远程主机(即被控制的机器Server), 假如ip为172.24.253.2 ;   在A上的命令: 代码如下: ssh-keygen -t rsa...
  • shile
  • shile
  • 2016年06月19日 17:07
  • 258

linux中ssh使用rsa免密码登录方法

A为本地主机(即用于控制其他主机的机器) ; B为远程主机(即被控制的机器Server), 假如ip为172.24.253.2 ;   在A上的命令: 复制代码 代码如下: ssh-ke...

SSH传输scp免密码登陆的方法

我们将执行scp命令的机器称为Client,scp命令操作的远端机器称为Server。 以下是在机器Client的root和机器Server的root之间建立安全信任关系的步骤: 1. 在机器C...

两台服务器之间免密码传输文件scp ssh

原理就是把两台服务器的对应用户的公钥拷贝到对方authorized_keys文件里面!有两种方法:以下是第一种方法:1、在Client上root用户执行ssh-keygen命令,生成建立安全信任关系的...

使用scp免密码服务器间传递文件

使用scp 免密码在服务器间传递文件文件

图解Windows下使用SSH Secure Shell Client远程连接Linux

SSH是一个用来替代TELNET、FTP以及R命令的工具包,主要解决口令在网上明文传输的问题。 一 下载安装SSH Secure Shell Client     按常规操作很快即可下载安装完成。...

解决Linux下Scp命令免密码远程复制

今天需要备份Solr中的一张大表的Shard(估计几百G)到一块硬盘里,一共11个节点,如果挨个备份那就需要一定时间了,第一时间想到的办法是,用nohup后台Scp过去下面是命令nohup scp -...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Windows使用SSH Secure Shell实现免密码登录Linux的方法以及使用scp2命令免密码下载文件
举报原因:
原因补充:

(最多只允许输入30个字)