我和我的同事一直在尝试让我的Macbook顺利运进我们的AWS生产服务器,这在几个月前确实有效,但是昨天我们去做时-我们一直收到以下错误消息。

(在以下所有部分中,我都用占位符替换了用户名和主机名)

$ ssh titan-data
Load key "/Users/aronlilland/.ssh/id_rsa.pub": invalid format
user@my_ip_address: Permission denied (publickey).

相关配置文件数据
<!-- config file -->
Host titan-data
    HostName my_ip_address
    User user
    IdentityFile ~/.ssh/id_rsa.pub
    AddKeysToAgent yes

我已经经历了可以使它再次正常工作的所有可能步骤,以下是我按顺序完成的以下步骤:

步骤1)确保已将.pub文件添加到服务器上

此步骤重复了几次,在此消除过程中,我将.pub文件重新生成了4次。该错误似乎是本地错误,而不是服务器错误,如果我错了,则有人需要纠正我。

步骤2)检查以下文件夹和文件是否具有正确的权限
drwx------    6 aronlilland  staff   192B Jan 18 09:41 .ssh/


drwx------    6 aronlilland  staff   192B Jan 18 09:41 ./
drwxr-xr-x+ 104 aronlilland  staff   3.3K Jan 16 16:09 ../
-rw-r--r--    1 aronlilland  staff   114B Jan 18 09:37 config
-rw-------    1 aronlilland  staff   1.7K Jan 18 09:41 id_rsa
-r--------@   1 aronlilland  staff   414B Jan 18 09:41 id_rsa.pub
-rw-r--r--    1 aronlilland  staff   4.6K Jan 18 09:48 known_hosts

这对修复错误消息没有任何影响。

步骤3)删除我的id_rsa文件和id_rsa.pub文件并重新生成一个新文件,让我的同事将新的.pub文件添加到服务器
  • 我生成密钥的第一种方式
    github documentation for generating a new SSH key中建议的ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
  • 通过我的同事将新的pub文件添加到了服务器,但是没有用。仍然出现相同的错误。
  • 删除旧文件后,我生成.pub文件的第二种方法是按照joyent manually generating your ssh key on OSX documentation中的建议运行ssh-keygen -t rsa
  • 仍然遇到相同的错误

  • 步骤4)使用自制软件升级ssh

    这是根据here, by Tim Hilliard列出的文档完成的

    步骤5)从我的“已知主机”文件中删除了IP地址(正在寻找稻草)

    什么也没做,只需要再次确认IP地址即可。

    编辑1)

    我最近做的一件事,记得在安装过程中看到错误消息,那天晚上我安装了另一个版本的python,所以我的计算机上安装了两个版本的python。我不确定这是否会导致ssh出现任何问题。
    $ python -V
    Python 2.7.10
    $ python3 -V
    Python 3.6.4
    $ brew doctor
    Please note that these warnings are just used to help the Homebrew maintainers
    with debugging if you file an issue. If everything you use Homebrew for is
    working fine: please don't worry or file an issue; just ignore this.
    Thanks!
    
    Warning: Python is installed at /Library/Frameworks/Python.framework
    
    Homebrew only supports building against the System-provided Python or a
    brewed Python. In particular, Pythons installed to /Library can interfere
    with other software installs.
    

    编辑2)

    Alfabravo在评论中建议在ssh命令中添加-v
    aronlilland:.ssh$ ssh titan-data -v
    OpenSSH_7.6p1, OpenSSL 1.0.2n  7 Dec 2017
    debug1: Reading configuration data /Users/aronlilland/.ssh/config
    debug1: /Users/aronlilland/.ssh/config line 1: Applying options for titan-data
    debug1: Reading configuration data /usr/local/etc/ssh/ssh_config
    debug1: Connecting to my_ip_address [my_ip_address] port 22.
    debug1: Connection established.
    debug1: identity file /Users/aronlilland/.ssh/id_rsa.pub type 0
    debug1: key_load_public: No such file or directory
    debug1: identity file /Users/aronlilland/.ssh/id_rsa.pub-cert type -1
    debug1: Local version string SSH-2.0-OpenSSH_7.6
    debug1: Remote protocol version 2.0, remote software version OpenSSH_7.2p2 Ubuntu-4ubuntu2.2
    debug1: match: OpenSSH_7.2p2 Ubuntu-4ubuntu2.2 pat OpenSSH* compat 0x04000000
    debug1: Authenticating to my_ip_address:22 as 'user'
    debug1: SSH2_MSG_KEXINIT sent
    debug1: SSH2_MSG_KEXINIT received
    debug1: kex: algorithm: curve25519-sha256@libssh.org
    debug1: kex: host key algorithm: ecdsa-sha2-nistp256
    debug1: kex: server->client cipher: chacha20-poly1305@openssh.com MAC: <implicit> compression: none
    debug1: kex: client->server cipher: chacha20-poly1305@openssh.com MAC: <implicit> compression: none
    debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
    debug1: Server host key: ecdsa-sha2-nistp256 SHA256:2l8QDc7x/fyzshKaU32jj9MeFtMAccu25MZBFNQuStQ
    debug1: Host 'my_ip_address' is known and matches the ECDSA host key.
    debug1: Found key in /Users/aronlilland/.ssh/known_hosts:19
    debug1: rekey after 134217728 blocks
    debug1: SSH2_MSG_NEWKEYS sent
    debug1: expecting SSH2_MSG_NEWKEYS
    debug1: SSH2_MSG_NEWKEYS received
    debug1: rekey after 134217728 blocks
    debug1: SSH2_MSG_EXT_INFO received
    debug1: kex_input_ext_info: server-sig-algs=<rsa-sha2-256,rsa-sha2-512>
    debug1: SSH2_MSG_SERVICE_ACCEPT received
    debug1: Authentications that can continue: publickey
    debug1: Next authentication method: publickey
    debug1: Offering public key: RSA SHA256:MuOjm+6gAzaxGr/n/If4LVjk/0H5/VT6zvib9/9C7c8 /Users/aronlilland/.ssh/id_rsa.pub
    debug1: Server accepts key: pkalg rsa-sha2-512 blen 279
    Load key "/Users/aronlilland/.ssh/id_rsa.pub": invalid format
    debug1: No more authentication methods to try.
    user@my_ip_address: Permission denied (publickey).
    aronlilland:.ssh$
    

    编辑3)

    检查.pub文件是否为有效格式
    aronlilland:.ssh$ ssh-keygen -l -f id_rsa.pub
    2048 SHA256:MuOjm+6gAzaxGr/n/If4LVjk/0H5/VT6zvib9/9C7c8 aronlilland@arons-mbp.cacc.local (RSA)
    aronlilland:.ssh$ touch foo.txt
    aronlilland:.ssh$ ls
    config       foo.txt      id_rsa       id_rsa.pub   known_hosts
    aronlilland:.ssh$ ssh-keygen -l -f foo.txt
    foo.txt is not a public key file.
    

    编辑4)

    确认我的id_rsa密钥和id_rsa.pub验证(我砍掉了ssh-rsa密钥的结尾,没有理由将其包含在网络上)
    aronlilland:.ssh$ ssh-keygen -y -f id_rsa
    Enter passphrase:
    ssh-rsa AAAAB3NzaC1yc2EAAAADAQA .......
    

    确认权限,即更新文件权限不会更改访问权限(为确保安全,我尝试了0444、444、0644、644)
    aronlilland:.ssh$ chmod 0444 id_rsa.pub
    aronlilland:.ssh$ ssh titan-data
    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    @         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    Permissions 0444 for '/Users/aronlilland/.ssh/id_rsa.pub' are too open.
    It is required that your private key files are NOT accessible by others.
    This private key will be ignored.
    Load key "/Users/aronlilland/.ssh/id_rsa.pub": bad permissions
    user@my_ip_address: Permission denied (publickey).
    

    和另一个
    aronlilland:.ssh$ chmod 0644 id_rsa.pub
    aronlilland:.ssh$ ssh titan-data
    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    @         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    Permissions 0644 for '/Users/aronlilland/.ssh/id_rsa.pub' are too open.
    It is required that your private key files are NOT accessible by others.
    This private key will be ignored.
    Load key "/Users/aronlilland/.ssh/id_rsa.pub": bad permissions
    user@my_ip_address: Permission denied (publickey).
    

    将其设置回chmod 400 id_rsa.pub
    编辑5)

    运行-vv
    aronlilland:.ssh$ chmod 400 id_rsa.pub
    aronlilland:.ssh$ ssh titan-data -vv
    OpenSSH_7.6p1, OpenSSL 1.0.2n  7 Dec 2017
    debug1: Reading configuration data /Users/aronlilland/.ssh/config
    debug1: /Users/aronlilland/.ssh/config line 1: Applying options for titan-data
    debug1: Reading configuration data /usr/local/etc/ssh/ssh_config
    debug2: resolving "my_ip_address" port 22
    debug2: ssh_connect_direct: needpriv 0
    debug1: Connecting to my_ip_address [my_ip_address] port 22.
    debug1: Connection established.
    debug1: identity file /Users/aronlilland/.ssh/id_rsa.pub type 0
    debug1: key_load_public: No such file or directory
    debug1: identity file /Users/aronlilland/.ssh/id_rsa.pub-cert type -1
    debug1: Local version string SSH-2.0-OpenSSH_7.6
    debug1: Remote protocol version 2.0, remote software version OpenSSH_7.2p2 Ubuntu-4ubuntu2.2
    debug1: match: OpenSSH_7.2p2 Ubuntu-4ubuntu2.2 pat OpenSSH* compat 0x04000000
    debug2: fd 3 setting O_NONBLOCK
    debug1: Authenticating to my_ip_address:22 as 'user'
    debug1: SSH2_MSG_KEXINIT sent
    debug1: SSH2_MSG_KEXINIT received
    debug2: local client KEXINIT proposal
    debug2: KEX algorithms: curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha256,diffie-hellman-group14-sha1,ext-info-c
    debug2: host key algorithms: ecdsa-sha2-nistp256-cert-v01@openssh.com,ecdsa-sha2-nistp384-cert-v01@openssh.com,ecdsa-sha2-nistp521-cert-v01@openssh.com,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,ssh-ed25519-cert-v01@openssh.com,ssh-rsa-cert-v01@openssh.com,ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa
    debug2: ciphers ctos: chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com
    debug2: ciphers stoc: chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com
    debug2: MACs ctos: umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1
    debug2: MACs stoc: umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1
    debug2: compression ctos: none,zlib@openssh.com,zlib
    debug2: compression stoc: none,zlib@openssh.com,zlib
    debug2: languages ctos:
    debug2: languages stoc:
    debug2: first_kex_follows 0
    debug2: reserved 0
    debug2: peer server KEXINIT proposal
    debug2: KEX algorithms: curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1
    debug2: host key algorithms: ssh-rsa,rsa-sha2-512,rsa-sha2-256,ecdsa-sha2-nistp256,ssh-ed25519
    debug2: ciphers ctos: chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com
    debug2: ciphers stoc: chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com
    debug2: MACs ctos: umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1
    debug2: MACs stoc: umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1
    debug2: compression ctos: none,zlib@openssh.com
    debug2: compression stoc: none,zlib@openssh.com
    debug2: languages ctos:
    debug2: languages stoc:
    debug2: first_kex_follows 0
    debug2: reserved 0
    debug1: kex: algorithm: curve25519-sha256@libssh.org
    debug1: kex: host key algorithm: ecdsa-sha2-nistp256
    debug1: kex: server->client cipher: chacha20-poly1305@openssh.com MAC: <implicit> compression: none
    debug1: kex: client->server cipher: chacha20-poly1305@openssh.com MAC: <implicit> compression: none
    debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
    debug1: Server host key: ecdsa-sha2-nistp256 SHA256:2l8QDc7x/fyzshKaU32jj9MeFtMAccu25MZBFNQuStQ
    debug1: Host 'my_ip_address' is known and matches the ECDSA host key.
    debug1: Found key in /Users/aronlilland/.ssh/known_hosts:19
    debug2: set_newkeys: mode 1
    debug1: rekey after 134217728 blocks
    debug1: SSH2_MSG_NEWKEYS sent
    debug1: expecting SSH2_MSG_NEWKEYS
    debug1: SSH2_MSG_NEWKEYS received
    debug2: set_newkeys: mode 0
    debug1: rekey after 134217728 blocks
    debug2: key: /Users/aronlilland/.ssh/id_rsa.pub (0x7fe9ff41c510), explicit
    debug1: SSH2_MSG_EXT_INFO received
    debug1: kex_input_ext_info: server-sig-algs=<rsa-sha2-256,rsa-sha2-512>
    debug2: service_accept: ssh-userauth
    debug1: SSH2_MSG_SERVICE_ACCEPT received
    debug1: Authentications that can continue: publickey
    debug1: Next authentication method: publickey
    debug1: Offering public key: RSA SHA256:MuOjm+6gAzaxGr/n/If4LVjk/0H5/VT6zvib9/9C7c8 /Users/aronlilland/.ssh/id_rsa.pub
    debug2: we sent a publickey packet, wait for reply
    debug1: Server accepts key: pkalg rsa-sha2-512 blen 279
    debug2: input_userauth_pk_ok: fp SHA256:MuOjm+6gAzaxGr/n/If4LVjk/0H5/VT6zvib9/9C7c8
    Load key "/Users/aronlilland/.ssh/id_rsa.pub": invalid format
    debug2: we did not send a packet, disable method
    debug1: No more authentication methods to try.
    user@my_ip_address: Permission denied (publickey).
    

    最佳答案

    IdentityFile配置参数应指向SSHt客户端用来向远程服务器证明其身份的私钥。 (然后,远程服务器应在其id_rsa.pub文件或等效位置中安装authorized_keys的内容)。

    您应该将路径id_rsa(不是 id_rsa.pub设置为,而不是)作为IdentityFile~/.ssh/config的参数。

    关于linux - id_rsa.pub文件SSH错误: invalid format,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48328446/

    10-11 22:15
    查看更多