`
Lewis·Lee
  • 浏览: 66229 次
  • 性别: Icon_minigender_1
  • 来自: 台州
社区版块
存档分类
最新评论

使用 PuTTYgen 在 Windows XP 上生成密钥对以及 SSH 的远程复制文件功能——中

阅读更多

注意 :代码中的 # 只表示注释作用,该内容不能输入到命令行窗口中

 

使用 PuTTYgen 在 Windows 系统上生成密钥对

  • Locate and run the PuTTYgen.exe( PuTTY Key Generator),select SSH-2 RSA key type, then press the Generate button and move the mouse over the blank area (as prompted) to generate some randomess on the keys, as the following graph 20.6:

图 20.6 在 PuTTYgen 中生成公钥对

  • When the key generation completed, copy all the text of public key in the box and append it to lewis's $home/.ssh/authorized_keys file, as the following graph 20.7:

图 20.7 复制公钥内容到 authorized_keys 文件中

  • Click “Save private key” button to save the PuTTY-generated private key that pair the public key appended to $HOME/.ssh/authorized_keys file:

图 20.8 PuTTYgen 已生成公钥

  • Run the Putty client (putty.exe) to specify the saved private key and auto-login username before initiating connection to lewis.

      第四点的内容和 在 Windows XP 上使用 OpenSSH 和 PuTTY 的公钥认证远程管理 Unubtu Server 10.04 LTS——上 对应内容一模一样,这里不再累赘。

      我们可以按“Save private key”,将私钥保存到本地磁盘上。由于我们要使用公钥认证登录到服务器上,所以必须将私钥保存起来,这样 PuTTY 就可以使用该私钥来登录到服务器上。那我们为什么不保存公钥呢?由于使用 PuTTYgen 保存的公钥格式和 Ubuntu Server 的公钥格式不一样(到底那些格式不一样,请参考 How To Fix “Server Refused Our Key” Error That Caused By Putty Generated RSA Public Key? ),所以我们没有必要保存它。那登录服务器时要用到公钥的,那正确的公钥在哪里呢?下面,我就给你解答这个问题。

      我使用 Linux 也不到两个星期,为了解决这个问题,就找我的挚友——Google 帮忙了。首先,当然是查看 PuTTY User Manual 喽接着查找关于,接着找到 Chapter 8: Using public keys for SSH authentication (该文档对使用 SSH 权限的公钥认证描述的非常清晰,关于这方面的问题,直接找该文档即可) ,然后就找到了 8.2.10 ‘Public key for pasting into authorized_keys file’ (我们 下载 PuTTY 的 zip 包,直接解压即可运行,里面已包含用户手册,同时也已将它上传到附件中) ,我已将该文档转化为 PDF 格式(只要安装了 Adobe Acrobat,就可以使用 IE 浏览器将 HTML 文件转化为 PDF),详见附件。

  1. 该文档提到:OpenSSH 服务器要求 SSH-2 的公钥格式也是一行格式(one-line format),“Public key for pasting into OpenSSH authorized_keys file”的文本框中给出的是正确的且是一行格式的公钥数据。一般的,我们会使用鼠标来选择这个文本框中的所有内容,接着按“Ctrl+C” 将其内容复制到剪贴板,然后将公钥数据黏贴到已建立连接到服务器的 PuTTY 会话中 ,相关命令行详见下文。本人已测试过,该方法可行。
  2. copy all the text of public-key in the box and save it to the text file that name is id_rsa.pub, then use PuTTY's PSCP tool to transfer the id_rsa.pub file to lewis's (the Ubuntu Server) $HOME/.ssh category, next append it to the same category of authorized_keys file. If the authorized_keys file is not exsit, then you must create it, and grant it to the -wr------ access right. We will use the following command-line to fullfil this task. 我自己的方法本质上就是官方提供的方法,只是用文本文件作为传递的桥梁而已。所以,建议直接使用第一种方法。
# 第一种方案的命令行数据
$ cd .ssh
$ sudo nano authorized_keys
# 然后将光标定位到文件的末尾空白行,按“Ctrl+C”,就可以将公钥数据追加到authorized_keys 文件中了,接着按“Ctrl+O”保存文件,再按“Ctrl+X”退出文件编辑状态。
# 文件保存后,重新启动 SSH 服务
$ sudo /etc/init.d/ssh restart
# 第二种方案的命令行数据
# 打开 Windows 命令行窗口,输入下面命令代码
# pscp -i E:\key\id_rsa1.ppk -P 2323 -scp E:\key\id_rsa1.pub lewis@192.168.1.199:/home/lewis/id_rsa1.pub
$ cd .ssh
# 将 id_rsa1.pub 文件的内容追加到 authorized_keys 文件的末尾
$ cat id_rsa1.pub >> authorized_keys

# If $HOME/.ssh/authorized_keys does not exist then
$ cd .ssh
$ cp id_rsa1.pub authorized_keys
# 给该用户赋予操作该文件的相关权限
$ chmod 600 authorized_keys
# alternative
$ cd $HOME/.ssh
$ touch authorized_keys
$ chmod 600 authorized_keys

      PSCP 的参数选项请参考官方文档 PSCP Usage ,对每个参数的含义都解释的非常清晰明了。For troubleshooting, you can refer to Putty Event Log in windows, i.e. right-click the Putty window title bar and click on the Event Log menu:

      刚开始,我也出现“Server Refused Our Key”错误,就是因为直接将 PuTTYgen 生成的公钥保存了,然后就 append it to the  authorized_keys,并且那时的 .ssh 目录下还没有包含 authorized_keys 文件。然后就到 Google 搜索相关资料,参考了以下几篇文章,并将它们总结成上面这些文字。

      怎么界面都是命令行的,没有图形界面的?在下一篇中,我将给你解答。

 

参考资料

  1. Chapter 8: Using public keys for SSH authentication 下的 8.2.10 ‘Public key for pasting into authorized_keys file’
  2. Configure Putty To Support Password-less SSH Login
  3. How To Fix “Server Refused Our Key” Error That Caused By Putty Generated RSA Public Key?

SSH 小技巧

用 scp 远程复制文件

通过 scp 命令,可以将本地文件复制到远程 SSH 服务器,也可以将远程 SSH 服务器上的文件复制到本地,还可以从一台 SSH 服务器将文件复制到另一个 SSH 服务器。如果在 Windows 平台上,则可以使用 PuTTY 的姊妹程序 PSCP。

  1. 将本地文件复制到 SSH 服务器
  2. 将 SSH 服务器文件复制到本地
  3. 两台 SSH 服务器之间复制文件
  4. 复制某目录下的所有文件
  5. 使用公钥认证
# 注意:将 PuTTY 的根目录添加到系统环境变量中
# 使用 SSH 的公钥认证方式
# 将本地文件复制到 SSH 服务器
pscp -i E:\key\id_rsa1.ppk -P 2323 -pw ****** -scp E:\key\id_rsa1.pub lewis@192.168.1.199:/home/lewis/
id_rsa1.pub               | 0 kB |   0.2 kB/s | ETA: 00:00:00 | 100%

# 将 SSH 服务器的私钥文件文件复制到本地
pscp -i E:\key\id_rsa1.ppk -P 2323 -pw ****** -scp lewis@192.168.1.199:/home/lewis/.ssh/id_rsa E:\key\id_rsa_server.ppk
id_rsa.ppk                | 1 kB |   1.7 kB/s | ETA: 00:00:00 | 100%

# 在两台 SSH 服务器直接复制文件,只能使用公钥认证方式登录
scp -P 2323 -i /home/lewis/.ssh/id_rsa id_rsa.pub lewis@192.168.1.198:/home/lewis/

     scp、PSCP命令的具体参数详见以下官方文档:scp(1)PSCP Usage

在客户端上指定命令

      使用 ssh,可以在命令行上指定要执行的命令。

在服务器上限制所执行的命令

      在服务器上做限制,使 SSH 连接进来后,只能够执行指定的命令。为此,我们需要修改~/.ssh/authorized_keys 文件,在相应的 key 面前,用 command 关键字加上要执行的命令,格式为:

command="/path/to/some/command arge " ssh-rsa ......(key)......

注意 :所有内容必须在同一行内。如果你使用 nano 编辑器,则需要加上 -w 选项,禁用自动换行功能。

       SSH 连接后,会从服务器的 ~/.ssh/authorized_keys读取该 command 参数,并执行其中指定的命令,然后退出,直接回到客户端。你可以在服务器上看看命令是否执行成功:

$ cat files.list

       SSH 的这种功能,在很多时候可以派上用场。

修改密钥口令

      你可以随时修改密钥的口令,使用 ssh-keygen 的 -p 选项即可。

将密钥放入内存

      如果你需要频繁地使用密钥进行远程连接,则可以用 ssh-agent 代理创建一个会话,然后用 ssh-add 将私钥加载到内存中:

$ ssh-agent $SHELL
$ ssh-add

      现在,在此会话中,所以的远程 ssh 命令都不需要再调用密钥了,当然也就不需要再频繁地输入口令了。

      使用结束后,记得从内存中删除密钥:

$ ssh-add -D

      然后,退出 ssh-agent 会话:

$ exit

     在 Windows 下,可以使用 Pageant 实现相同的功能。

 

 

上一篇:在 Windows XP 上使用 OpenSSH 和 PuTTY 的公钥认证远程管理 Unubtu Server 10.04 LTS——上

下一篇:在 Windows XP 上使用 FileZilla 来图形化界面管理 Linux Server——下

  • 大小: 14.5 KB
  • 大小: 9.8 KB
  • 大小: 20 KB
  • 大小: 25.2 KB
  • 大小: 17.3 KB
  • 大小: 7.3 KB
分享到:
评论

相关推荐

    puttygen-SSH密钥生成利器

    puttygen-SSH密钥生成利器 puttygen是专为windows用户用以生成 linux的ssh协议的公、私密钥的小工具,该工具简单易用,功能十分强大

    puttygen.rar windows ppk生成工具

    PuTTYgen是一款在Windows操作系统上广泛使用的开源工具,主要用于生成SSH(Secure Shell)密钥对,包括公钥和私钥。SSH是一种网络协议,用于安全地远程登录到服务器,进行数据传输和其他网络服务。PuTTYgen是PuTTY...

    远程控制与监控 —— 最佳远程控制方案:SSH

    7. **PUTTYGEN.EXE** - PuTTY Key Generator,用于创建、导入和导出SSH密钥对,为SSH连接提供更强的安全性。 8. **PAGEANT.EXE** - PuTTY代理,它可以存储和管理SSH密钥,使得用户在登录时无需手动输入密码。 9. *...

    密钥生成工具 puttygen,windows系统下用于生成公钥和私钥。

    在实际操作中,当用户尝试通过PuTTY连接到SSH服务器时,可以将生成的公钥上传到服务器,配置在用户的SSH授权文件(~/.ssh/authorized_keys)中。这样,当客户端(使用私钥)发起连接请求时,服务器就能通过公钥加密...

    puttygen密钥生成器

    PuTTYgen是一款强大的SSH密钥生成工具,它与PuTTY套件紧密关联,主要用于生成SSH(Secure Shell)密钥对,这些密钥对在远程访问、数据加密和身份验证过程中起到至关重要的作用。PuTTYgen支持多种类型的密钥,包括RSA...

    PuTTYGen(密钥生成工具) V0.68 官方版

    PuTTYGen是一款强大的密钥生成工具,主要用于创建SSH(Secure Shell)密钥对,这些密钥对在远程访问、数据加密以及网络安全传输中起到至关重要的作用。PuTTYGen是PuTTY套件的一部分,PuTTY是一个免费的开源软件,...

    puttygen 密钥生成

    PuTTYgen是一款强大的SSH密钥生成工具,主要与PuTTY套件一起使用,提供安全的远程登录功能。本文将深入探讨 PuTTYgen 的工作原理、密钥生成过程以及如何使用这款工具。 一、PuTTYgen简介 PuTTYgen,全称PuTTY Key ...

    puttygen密钥生成

    在生成SSH密钥对的过程中,PuTTYgen提供了以下功能: 1. **选择密钥类型**:PuTTYgen支持RSA、DSA、ECDSA和Ed25519等多种算法。RSA是最常用的一种,因为它具有良好的兼容性和安全性。ECDSA和Ed25519则相对较新,...

    使用密钥对通过SSH连接树莓派

    综上所述,通过使用密钥对进行SSH连接不仅可以提高远程登录的安全性,还能简化用户的登录流程。此外,密码学的应用远不止于此,它还涉及到日常生活中多个方面,对于保护个人隐私和数据安全具有重要意义。

    putty and puttygen

    1. 使用PuTTYgen生成SSH密钥对,保存私钥(例如:id_rsa.ppk)和公钥(例如:id_rsa.pub)。 2. 将公钥内容复制到远程服务器的~/.ssh/authorized_keys文件中,以实现无密码SSH登录。 3. 使用PuTTY配置会话,输入...

    Git Windows XP服务器搭建

    总之,Git Windows XP服务器搭建是一个涉及多个组件和步骤的过程,包括安装CopSSH、配置SSH服务、生成和分发密钥对,以及在客户端设置Git和TortoiseGIT。这个过程对于在Windows XP环境下实现安全的Git远程仓库管理至...

    ssh 生成工具

    "SSH钥匙生成工具"就是指像PuTTYgen这样的程序,它们能够帮助用户生成适用于TortoiseGit、PuTTY以及GitHub等工具的SSH密钥对。生成过程通常包括以下步骤: 1. 打开PuTTYgen,选择要生成的密钥类型(通常是RSA)。 2...

    putty\puttygen\sshkey

    PUTTY、PuTTYgen 和 SSH Key 是在 IT 领域中进行远程访问和安全通信的重要工具,尤其在Linux和Unix系统管理中广泛使用。这些工具主要与Secure Shell (SSH) 协议相关,用于加密网络连接,确保数据传输的安全性。 **...

    puttygen 密钥生成器

    PuTTYgen 是一套可以產生金鑰的工具,它可生成 RSA 以及 DSA 的金鑰, 做出來的公開以及私有金鑰,可以用於 PuTTY 、 PSCP 、 Plink 以及 Pageant 。

    pageant+plink+puttygen

    在实际使用中,你首先需要使用Puttygen生成一对SSH密钥,然后将公钥复制到远程服务器的授权钥匙文件(~/.ssh/authorized_keys)。接着,将私钥保存在本地,并使用Pageant加载私钥。最后,配置SVN客户端(如...

    配置 SSH 服务以使用证书登录 Linux 服务器.docx

    生成的密钥对文件可以保存在服务器上,以便下次使用。 二、配置 SSH 服务器 配置 SSH 服务器需要修改配置文件 /etc/ssh/sshd_config。主要配置项包括: * 端口号:指定 SSH 服务器监听的端口号,例如 22。 * 协议...

    linux系统设置密钥登录

    回到密钥生成的窗口,在“Key”下方的一堆字符串就是生成的公钥内容,复制下来,粘贴到远程 Linux /root/.ssh/authorized_keys 文件中。如果没有.ssh 目录,需要自己建立一个,并更改目录权限为 700。 在 Linux ...

    SSH远程工具

    本文主要介绍四个常用的SSH工具:Putty、Psftp、Puttygen和Pageant,以及如何使用它们进行远程管理和文件传输。 1. Putty:Putty是一款免费的SSH客户端,用于Windows用户连接到Linux或Unix服务器。它支持多种网络...

Global site tag (gtag.js) - Google Analytics