Невозможно получить доступ к серверу Linux за NAT через обратный туннель SSH с беспарольным входом SSH

303
Betty

проблема

Я не могу подключиться к своему домашнему серверу через пароль SSH без входа в систему с моего клиентского компьютера / удаленного компьютера через мой сервер ретрансляции .

Я получаю homeserver@localhost: Permission denied (publickey).

История / процедура завершена

  1. Настройте домашний сервер (Kali Debian) за NAT, установите open-ssh, сгенерируйте ключи, отредактируйте файл sshd_config, чтобы запретить пароли.
  2. Настройте ретранслятор (AWS Ubuntu AMI), установите open-ssh, сгенерируйте ключи, отредактируйте файл sshd_config, чтобы запретить пароли.
  3. Настройте клиентский компьютер (Kali Debian работает на рабочей станции VMware), установите open-ssh, сгенерируйте ключи.
  4. Изменены следующие разрешения для homeserver, relayserver и clientcomuter :

    • Права доступа к каталогу .ssh до 700 (drwx ------)
    • открытый ключ (файл .pub) для 644 (-rw-r - r--)
    • закрытый ключ (id_rsa) до 600 (-rw -------)
    • домашний каталог до 755 (drwxr-xr-x)

Затем я передал ключи аутентификации на сервер ретрансляции как с моего домашнего сервера, так и с моего клиентского компьютера и вошел в систему. Никаких проблем.

Я добавил GewayPorts yesв файл ssshd_config на сервере ретрансляции .

Затем я выполнил следующие команды:

На домашнем сервере :

ssh -fN -R 10022:localhost:22 relayserver_user@1.1.1.1 

На релейном сервере :

relayserver~$ sudo netstat -nap | grep 10022 - проверить соединение - вроде все хорошо:

На клиентском компьютере (после подключения к серверу ретрансляции ):

ssh -p 10022 homeserver_user@localhost 

Это где он сначала говорит неудачный ключ аутентификации. Не уверен, что происходит, потому что, когда я редактирую файл sshd_config на домашнем сервере для passwordauthentication yesудаленного туннеля, работает без проблем.

Также, когда я пытаюсь выполнить команду во второй раз, она застревает в отладке (см. Ниже).

Обратите внимание, что я готовлю homeserver через teamviewer.

Свалки и бревна

Дамп от тестирования реле сервера :

tcp 0 0 0.0.0.0:10022 0.0.0.0:* LISTEN 2878/sshd: ubuntu  tcp6 0 0 :::10022 :::* LISTEN 2878/sshd: ubuntu  

Дамп из -vvv во время clientcomputer при подключении к домашнему серверу после входа в сервер ретрансляции с 1-й попытки:

OpenSSH_7.6p1 Ubuntu-4, OpenSSL 1.0.2n 7 Dec 2017 debug1: Reading configuration data /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config line 19: Applying options for * debug2: resolving "localhost" port 10022 debug2: ssh_connect_direct: needpriv 0 debug1: Connecting to localhost [127.0.0.1] port 10022. debug1: Connection established. debug1: key_load_public: No such file or directory debug1: identity file /home/ubuntu/.ssh/id_rsa type -1 debug1: key_load_public: No such file or directory debug1: identity file /home/ubuntu/.ssh/id_rsa-cert type -1 debug1: key_load_public: No such file or directory debug1: identity file /home/ubuntu/.ssh/id_dsa type -1 debug1: key_load_public: No such file or directory debug1: identity file /home/ubuntu/.ssh/id_dsa-cert type -1 debug1: key_load_public: No such file or directory debug1: identity file /home/ubuntu/.ssh/id_ecdsa type -1 debug1: key_load_public: No such file or directory debug1: identity file /home/ubuntu/.ssh/id_ecdsa-cert type -1 debug1: identity file /home/ubuntu/.ssh/id_ed25519 type 3 debug1: key_load_public: No such file or directory debug1: identity file /home/ubuntu/.ssh/id_ed25519-cert type -1 debug1: Local version string SSH-2.0-OpenSSH_7.6p1 Ubuntu-4 debug1: Remote protocol version 2.0, remote software version OpenSSH_7.7p1 Debian-3 debug1: match: OpenSSH_7.7p1 Debian-3 pat OpenSSH* compat 0x04000000 debug2: fd 3 setting O_NONBLOCK debug1: Authenticating to localhost:10022 as 'homeserver' debug3: put_host_port: [localhost]:10022 debug3: hostkeys_foreach: reading file "/home/ubuntu/.ssh/known_hosts" debug3: record_hostkey: found key type ECDSA in file /home/ubuntu/.ssh/known_hosts:2 debug3: load_hostkeys: loaded 1 keys from [localhost]:10022 debug3: order_hostkeyalgs: prefer hostkeyalgs: 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 debug3: send packet: type 20 debug1: SSH2_MSG_KEXINIT sent debug3: receive packet: type 20 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,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-group14-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 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 debug3: send packet: type 30 debug1: expecting SSH2_MSG_KEX_ECDH_REPLY debug3: receive packet: type 31 debug1: Server host key: ecdsa-sha2-nistp256 SHA256:yfx8V8nVyZNs0bF1IXLB5Ud5fF1iHYgp1+0dVwHqlx4 debug3: put_host_port: [127.0.0.1]:10022 debug3: put_host_port: [localhost]:10022 debug3: hostkeys_foreach: reading file "/home/ubuntu/.ssh/known_hosts" debug3: record_hostkey: found key type ECDSA in file /home/ubuntu/.ssh/known_hosts:2 debug3: load_hostkeys: loaded 1 keys from [localhost]:10022 debug1: Host '[localhost]:10022' is known and matches the ECDSA host key. debug1: Found key in /home/ubuntu/.ssh/known_hosts:2 debug3: send packet: type 21 debug2: set_newkeys: mode 1 debug1: rekey after 134217728 blocks debug1: SSH2_MSG_NEWKEYS sent debug1: expecting SSH2_MSG_NEWKEYS debug3: receive packet: type 21 debug1: SSH2_MSG_NEWKEYS received debug2: set_newkeys: mode 0 debug1: rekey after 134217728 blocks debug2: key: /home/ubuntu/.ssh/id_rsa ((nil)) debug2: key: /home/ubuntu/.ssh/id_dsa ((nil)) debug2: key: /home/ubuntu/.ssh/id_ecdsa ((nil)) debug2: key: /home/ubuntu/.ssh/id_ed25519 (0x56263b49fb50) debug3: send packet: type 5 debug3: receive packet: type 7 debug1: SSH2_MSG_EXT_INFO received debug1: kex_input_ext_info: server-sig-algs=<ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521> debug3: receive packet: type 6 debug2: service_accept: ssh-userauth debug1: SSH2_MSG_SERVICE_ACCEPT received debug3: send packet: type 50 debug3: receive packet: type 51 debug1: Authentications that can continue: publickey debug3: start over, passed a different list publickey debug3: preferred gssapi-keyex,gssapi-with-mic,publickey,keyboard-interactive,password debug3: authmethod_lookup publickey debug3: remaining preferred: keyboard-interactive,password debug3: authmethod_is_enabled publickey debug1: Next authentication method: publickey debug1: Trying private key: /home/ubuntu/.ssh/id_rsa debug3: no such identity: /home/ubuntu/.ssh/id_rsa: No such file or directory debug1: Trying private key: /home/ubuntu/.ssh/id_dsa debug3: no such identity: /home/ubuntu/.ssh/id_dsa: No such file or directory debug1: Trying private key: /home/ubuntu/.ssh/id_ecdsa debug3: no such identity: /home/ubuntu/.ssh/id_ecdsa: No such file or directory debug1: Offering public key: ED25519 SHA256:AvsGsfq4sXyTubnuWOgb***********jVBPIyFEQ9/UY /home/ubuntu/.ssh/id_ed25519 debug3: send_pubkey_test debug3: send packet: type 50 debug2: we sent a publickey packet, wait for reply debug3: receive packet: type 60 debug1: Server accepts key: pkalg ssh-ed25519 blen 51 debug2: input_userauth_pk_ok: fp SHA256:AvsGsfq4sXyTubnuWOgbL**********FEQ9/UY debug3: sign_and_send_pubkey: ED25519 SHA256:AvsGsfq4sXyT************ debug3: no such identity: /home/ubuntu/.ssh/id_ed25519: No such file or directory debug2: we did not send a packet, disable method debug1: No more authentication methods to try. homeserver@localhost: Permission denied (publickey). 

Дамп из -vvv во время clientcomputer при подключении к домашнему серверу после входа в сервер ретрансляции 2-й попытки:

OpenSSH_7.6p1 Ubuntu-4, OpenSSL 1.0.2n 7 Dec 2017 debug1: Reading configuration data /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config line 19: Applying options for * debug2: resolving "localhost" port 10022 debug2: ssh_connect_direct: needpriv 0 debug1: Connecting to localhost [127.0.0.1] port 10022. debug1: Connection established. debug1: key_load_public: No such file or directory debug1: identity file /home/ubuntu/.ssh/id_rsa type -1 debug1: key_load_public: No such file or directory debug1: identity file /home/ubuntu/.ssh/id_rsa-cert type -1 debug1: key_load_public: No such file or directory debug1: identity file /home/ubuntu/.ssh/id_dsa type -1 debug1: key_load_public: No such file or directory debug1: identity file /home/ubuntu/.ssh/id_dsa-cert type -1 debug1: key_load_public: No such file or directory debug1: identity file /home/ubuntu/.ssh/id_ecdsa type -1 debug1: key_load_public: No such file or directory debug1: identity file /home/ubuntu/.ssh/id_ecdsa-cert type -1 debug1: identity file /home/ubuntu/.ssh/id_ed25519 type 3 debug1: key_load_public: No such file or directory debug1: identity file /home/ubuntu/.ssh/id_ed25519-cert type -1 debug1: Local version string SSH-2.0-OpenSSH_7.6p1 Ubuntu-4 

Я также попытался (безуспешно) создать ключ id_ed25519.pub на клиентском компьютере и добавить его в каталог /home/.ssh/ на сервере ретрансляции - как вы можете видеть в дампах (выше).

Дамп с grep 'sshd' /var/log/auth.logна homeserver :

Aug 14 06:04:48 homeserver-host sshd[3364]: /etc/ssh/sshd_config line 38: Deprecated option RSAAuthentication Aug 14 06:04:49 homeserver-host sshd[3364]: reprocess config line 38: Deprecated option RSAAuthentication Aug 14 06:04:49 homeserver-host sshd[3364]: Connection closed by authenticating user homeserver ::1 port 43536 [preauth] Aug 14 06:26:34 homeserver-host sudo: homeserver : TTY=pts/0 ; PWD=/home/homeserver/.ssh ; USER=root ; COMMAND=/bin/grep sshd /var/log/auth.log Aug 14 06:36:57 homeserver-host sudo: homeserver : TTY=pts/1 ; PWD=/etc/ssh ; USER=root ; COMMAND=/bin/nano sshd_config Aug 14 06:38:44 homeserver-host sshd[5932]: Server listening on 0.0.0.0 port 22. Aug 14 06:38:44 homeserver-host sshd[5932]: Server listening on :: port 22. Aug 14 06:39:56 homeserver-host sshd[5975]: Connection closed by authenticating user homeserver ::1 port 43560 [preauth] Aug 14 06:54:27 homeserver-host sudo: homeserver : TTY=pts/2 ; PWD=/home/homeserver ; USER=root ; COMMAND=/bin/nano /etc/ssh/sshd_config Aug 14 10:37:13 homeserver-host sshd[5932]: Received SIGHUP; restarting. Aug 14 10:37:13 homeserver-host sshd[5932]: Server listening on 0.0.0.0 port 22. Aug 14 10:37:13 homeserver-host sshd[5932]: Server listening on :: port 22. Aug 14 10:37:23 homeserver-host sshd[5932]: Received SIGHUP; restarting. Aug 14 10:37:23 homeserver-host sshd[5932]: Server listening on 0.0.0.0 port 22. Aug 14 10:37:23 homeserver-host sshd[5932]: Server listening on :: port 22. Aug 14 13:31:19 homeserver-host sshd[5932]: Received SIGHUP; restarting. Aug 14 13:31:19 homeserver-host sshd[5932]: Server listening on 0.0.0.0 port 22. Aug 14 13:31:19 homeserver-host sshd[5932]: Server listening on :: port 22. Aug 14 13:31:24 homeserver-host sshd[5932]: Received SIGHUP; restarting. Aug 14 13:31:24 homeserver-host sshd[5932]: Server listening on 0.0.0.0 port 22. Aug 14 13:31:24 homeserver-host sshd[5932]: Server listening on :: port 22. Aug 14 13:43:02 homeserver-host sshd[5932]: Received SIGHUP; restarting. Aug 14 13:43:02 homeserver-host sshd[5932]: Server listening on 0.0.0.0 port 22. Aug 14 13:43:02 homeserver-host sshd[5932]: Server listening on :: port 22. Aug 14 13:43:12 homeserver-host sshd[5932]: Received SIGHUP; restarting. Aug 14 13:43:12 homeserver-host sshd[5932]: Server listening on 0.0.0.0 port 22. Aug 14 13:43:12 homeserver-host sshd[5932]: Server listening on :: port 22. Aug 14 16:30:03 homeserver-host sshd[5932]: Received signal 15; terminating. Aug 14 23:00:27 homeserver-host sshd[3069]: Connection closed by authenticating user homeserver ::1 port 33912 [preauth] Aug 14 23:45:51 homeserver-host sudo: homeserver : TTY=pts/0 ; PWD=/home/homeserver ; USER=root ; COMMAND=/bin/grep sshd /var/log/auth.log 

Надеюсь, кто-то может помочь!

2
Вы не указали параметр `-i / path / to / private.key` в команде` ssh` на стороне клиента. Также убедитесь, что файл закрытого ключа имеет 600 разрешений. Alex 5 лет назад 0
Насколько я понимаю, ты никогда не должен передавать закрытые ключи? Вы знаете, почему я должен сделать это в этом случае. Спасибо за вашу помощь. Betty 5 лет назад 0
Вот как работает аутентификация с открытым ключом. Упрощенная модель: разрезать доллар на миллиард частей, хорошо перемешать его, затем разделить на две части, назвав одну публичной, а другую частной. Только те, у кого есть обе груды, могут восстановить доллар обратно. Как и в вашем случае, вы поместили открытый ключ на удаленный компьютер и использовали закрытый ключ для завершения головоломки аутентификации. Поэтому он вызывает [асимметричную криптографию] (https://en.wikipedia.org/wiki/Public-key_cryptography), где оба ключа должны использоваться. Ваш закрытый ключ никогда не покидает ваш компьютер, но используется (только на вашем компьютере) для шифрования сообщений. Alex 5 лет назад 0
я понимаю - спасибо. Знаете ли вы, почему мне вдруг пришлось бы начать указывать open-ssh, где находится закрытый ключ. Казалось, он всегда знал, где находятся ключи для «нормальных» соединений между компьютерами (ключ аутентификации). Является ли это характеристикой обратных SSH-туннелей с бессловесным SSH-входом? Betty 5 лет назад 0
Если вы установите `PasswordAuthentication no` в` sshd_config`, тогда SSH разрешит использовать только аутентификацию с открытым ключом, независимо от того, как вы используете SSH, либо для «обычного» подключения к удаленному хосту, либо для обратного туннеля, либо даже для использования `scp`. Аутентификация с открытым ключом является самой сильной стороной SSH, поскольку обычные пароли могут быть взломаны, а с открытыми ключами это практически невозможно. Если вы не хотите использовать параметр `-i`, вы можете установить все параметры командной строки SSH в файле` ~ / .ssh / config`, которые будут применяться к конкретному хосту. Alex 5 лет назад 0
так с клиентского компьютера после входа на сервер ретрансляции: ssh -i / location / to / clientcomputer / privatekey -p 10022 homeserver_user @ localhost Betty 5 лет назад 0

0 ответов на вопрос

Похожие вопросы