SFTP 要求输入未加密私钥的密码,但 WinSCP 工作正常吗?

Pau*_*aul 3 linux redhat sftp private-key

概括:

我想将文件从一台服务器 SFTP 到另一台服务器,并使用私钥进行授权。

我相信公钥安装正确(WinSCP 允许我使用私钥登录),并且我在生成密钥对时故意没有创建密码....但是当我尝试在命令行上 SFTP 时,我m 提示输入不存在的密码用户密码。

如何仅使用解包的私钥进行 SFTP?

细节:

我有两台服务器:

  • 到服务器123

  • 来自Server123

我想使用私钥登录将文件从一台服务器 SFTP 到另一台服务器。

  1. 我使用 puttyGen 生成一个公私钥对:

    • 提供提示的随机运动后,我保存了公钥和私钥
    • 当提示未加密的私钥时,我将密码字段留空并选择“是”
  2. 我在 toServer123 上安装了公钥:

    • 我创建了一个密码为“password123”的用户 paultest
    • 我测试我可以作为用户 paultest ssh 进入 toServer123
    • 我创建 /home/paultest/.ssh/authorized_keys 并添加公钥
    • 公钥看起来像:

      cat /home/paultest/.ssh/authorized_keys #=>

      ssh-rsa verylongstringoflettersandnumbersNoNewlines paultest@toServer123

    • 我 chmod 权限:authorized_keys (644), .ssh (700)

  3. 我在 fromServer123 上安装私钥:

    • 我创建目录:/home/support_user/sftp_proc (chmod 700)

    • 我将 my_private_key.ppk (chmod 600) 上传到 /sftp_proc

    • 我在 /sftp_proc 中创建文件 text.txt ,其中只包含“这是一个测试”

  4. 作为 support_user,我尝试从 fromServer123 SFTP 到 toServer123:

    sftp -oIdentityFile=./my_private_key.ppk paultest@toServer123
    
    Run Code Online (Sandbox Code Playgroud)

我的期望

我在没有进一步提示的情况下登录到服务器,因为我使用未包装的密钥文件登录。

我得到了什么

Connecting to toServer123...

Unauthorized access to or use of this system is prohibited.
All access and use may be monitored and recorded.

Enter passphrase for key './my_private_key.ppk':
Run Code Online (Sandbox Code Playgroud)

我只是按回车键,然后得到:

paultest@toServer123's password:
Run Code Online (Sandbox Code Playgroud)

调试步骤

  • 如果我提供 paultest 密码,则 SFTP 工作 - 但我不想使用密码,我想用私钥登录

  • 如果我尝试使用 winSCP 登录并提供私钥,我可以仅使用该密钥登录 - 我没有收到密码或密码提示。

问题

如果我的目标是在不提供密码的情况下登录,并且不提示输入不存在的密码,我做错了什么?

编辑

my_private_key.ppk 看起来像:

PuTTY-User-Key-File-2: ssh-rsa
Encryption: none
Comment: rsa-key-20190528
Public-Lines: 6
LOTSOFLETTERSabcSYMBOLS//++ANDNUMBERS123==
Private-Lines: 14
EVENEVENMORELOTSOFLETTERSabcSYMBOLS//++ANDNUMBERS123==
Private-MAC: cf6c5c786f51a623b28eabe226c98dd6faa09787
Run Code Online (Sandbox Code Playgroud)

Rom*_*nov 7

AFAIKsftp期望不同格式的密钥。OpenSSH 的密钥应如下所示:

-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAyGhJBM7lcIZgvTbLG4S2N1oHAIszqAKKysCQY17Fp0dHvL+A
8mVCYwKL0otQfS2FHmmeRfrpLQtaK7R/DFnxfXn8xczpY8Cn6sv+GUjztN0gacOK
Yyiymnfr4mKgSaRIaJDmi3ua8mlddvwtUJFkAt7WrVAgx0z4MkW5jR+riKnT69D+
<snip> 
YFbX0QKBgFTXQ+h79DR4ZwW/f5pop9v8H7GD+g/xRKadgFp4GTKA7RJx64XN/ok+
12+u6pApA8w+ah2K2yoaBIV1d3MatYfUwSJ+0esXTYczBeSXOg6YqrMqjZ4KH2wO
kOyu2/4Dq7VcuK4PSnF1wbd+ZPHffh+YOJIII4iU7fYoRMDHa3tW
-----END RSA PRIVATE KEY-----
Run Code Online (Sandbox Code Playgroud)

所以你应该将你的 ppk 密钥转换为 RSA 密钥。这里是如何使用腻子工具来做到这一点

  • 好的,我在 OpenSSH 7.7 中得到了 *"无效格式"*。但是如果我使用旧版本的 OpenSSH,比如 5.3,我确实会收到输入密码的提示。+1 (2认同)