LINUX.ORG.RU
решено ФорумAdmin

SSH с ключами через нестандартный внешний порт через и проброс портов на маршрутизаторе


0

1

Доброго времени суток!
Есть домашний комп, с которого хочу настроить ssh-доступ с помощью ключей на удаленную машину, сидящую за маршрутизатором, причем внешний порт для подключения на этом маршрутизаторе нестандартный - 2222.
В своих настройках в ~/.ssh/config прописал:
Host remote
HostName XXX.XXX.XXX.XXX
Port 2222
IdentityFile /home/username/.ssh/id_rsa
Но при соединении выводится сообщение:
Agent admitted failure to sign using the key.
И предлагается ввести пароль. Пароль ввожу и захожу на машину.

Что и где нужно прописать, чтобы в моем случае заработала авторизация по ключу?

Навскидку — ты не добавил закрытый ключ на удаленную машину в authorized_keys.

А вообще, неплохо было бы увидеть конфиг sshd_config.

geladil ()
Ответ на: комментарий от geladil

Ключ добавил с помощью ssh-copy-id.

/etc/sshd_config:

# Package generated configuration file
# See the sshd_config(5) manpage for details

# What ports, IPs and protocols we listen for
Port 22
# Use these options to restrict which interfaces/protocols sshd will bind to
#ListenAddress ::
#ListenAddress 0.0.0.0
Protocol 2
# HostKeys for protocol version 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
#Privilege Separation is turned on for security
UsePrivilegeSeparation yes

# Lifetime and size of ephemeral version 1 server key
KeyRegenerationInterval 3600
ServerKeyBits 768

# Logging
SyslogFacility AUTH
LogLevel INFO

# Authentication:
LoginGraceTime 120
PermitRootLogin yes
StrictModes yes

RSAAuthentication yes
PubkeyAuthentication yes
#AuthorizedKeysFile %h/.ssh/authorized_keys


# Don't read the user's ~/.rhosts and ~/.shosts files
IgnoreRhosts yes
# For this to work you will also need host keys in /etc/ssh_known_hosts
RhostsRSAAuthentication no
# similar for protocol version 2
HostbasedAuthentication no
# Uncomment if you don't trust ~/.ssh/known_hosts for RhostsRSAAuthentication
#IgnoreUserKnownHosts yes

# To enable empty passwords, change to yes (NOT RECOMMENDED)
PermitEmptyPasswords no

# Change to yes to enable challenge-response passwords (beware issues with
# some PAM modules and threads)
ChallengeResponseAuthentication no

# Change to no to disable tunnelled clear text passwords
#PasswordAuthentication yes


# Kerberos options
#KerberosAuthentication no
#KerberosGetAFSToken no
#KerberosOrLocalPasswd yes
#KerberosTicketCleanup yes

# GSSAPI options
#GSSAPIAuthentication no
#GSSAPICleanupCredentials yes

X11Forwarding yes
X11DisplayOffset 10
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes
#UseLogin no

#MaxStartups 10:30:60
#Banner /etc/issue.net

# Allow client to pass locale environment variables
AcceptEnv LANG LC_*

Subsystem sftp /usr/lib/openssh/sftp-server

# Set this to 'yes' to enable PAM authentication, account processing,
# and session processing. If this is enabled, PAM authentication will
# be allowed through the ChallengeResponseAuthentication and
# PasswordAuthentication. Depending on your PAM configuration,
# PAM authentication via ChallengeResponseAuthentication may bypass
# the setting of «PermitRootLogin without-password».
# If you just want the PAM account and session checks to run without
# PAM authentication, then enable this but set PasswordAuthentication
# and ChallengeResponseAuthentication to 'no'.
UsePAM yes

ares4322 ()

Зачем все эти телодвижения?

Закидываешь публичный ключ на удаленную машину, у себя делаешь ssh -p 2222 server_name

leave ★★★★★ ()
Ответ на: комментарий от leave

По паролю подключается же, значит, проблема в конфиге или ключах.

geladil ()
Ответ на: комментарий от ares4322

в том-то и дело, что так не работает

Убедись, что на целевой машине (куда ты копировал открытый ключ) каталог .ssh имеет права доступа 0700, а файл .ssh/authorized_keys — 0600.

red_eyed_peguin ()
Ответ на: комментарий от ares4322

Это не ошибка, а предупреждение. Возникает из-за несоответствия fqdn и обратной зоны. На возможность подключения влиять не должна.

Попробуй поставить LogLevel DEBUG и посмотреть еще.

geladil ()
Ответ на: комментарий от geladil

Вот кусок файла лога с LogLevel DEBUG.
Как я понял, sshd находит ключ, откладывает его, но потом почему-то переходит на другие способы проверки и в итоге доходит до пароля.

May 4 23:34:15 ntcserv sshd[5824]: debug1: matching key found: file /home/ntcadmin/.ssh/authorized_keys, line 2
May 4 23:34:15 ntcserv sshd[5824]: Found matching RSA key: %key%
May 4 23:34:15 ntcserv sshd[5824]: debug1: restore_uid: 0/0
May 4 23:34:15 ntcserv sshd[5824]: Postponed publickey for ntcadmin from %SERVER_ADDRESS% port 62037 ssh2 [preauth]
May 4 23:34:15 ntcserv sshd[5824]: debug1: userauth-request for user ntcadmin service ssh-connection method publickey [preauth]
May 4 23:34:15 ntcserv sshd[5824]: debug1: attempt 2 failures 0 [preauth]
May 4 23:34:15 ntcserv sshd[5824]: debug1: Checking blacklist file /usr/share/ssh/blacklist.DSA-1024
May 4 23:34:15 ntcserv sshd[5824]: debug1: Checking blacklist file /etc/ssh/blacklist.DSA-1024
May 4 23:34:15 ntcserv sshd[5824]: debug1: temporarily_use_uid: 1000/1000 (e=0/0)
May 4 23:34:15 ntcserv sshd[5824]: debug1: trying public key file /home/ntcadmin/.ssh/authorized_keys
May 4 23:34:15 ntcserv sshd[5824]: debug1: fd 4 clearing O_NONBLOCK
May 4 23:34:15 ntcserv sshd[5824]: debug1: restore_uid: 0/0
May 4 23:34:15 ntcserv sshd[5824]: debug1: temporarily_use_uid: 1000/1000 (e=0/0)
May 4 23:34:15 ntcserv sshd[5824]: debug1: trying public key file /home/ntcadmin/.ssh/authorized_keys2
May 4 23:34:15 ntcserv sshd[5824]: debug1: Could not open authorized keys '/home/ntcadmin/.ssh/authorized_keys2': No such file or directory
May 4 23:34:15 ntcserv sshd[5824]: debug1: restore_uid: 0/0
May 4 23:34:15 ntcserv sshd[5824]: Failed publickey for ntcadmin from %SERVER_ADDRESS% port 62037 ssh2
May 4 23:34:16 ntcserv sshd[5824]: debug1: userauth-request for user ntcadmin service ssh-connection method password [preauth]

ares4322 ()
Ответ на: комментарий от ares4322

Я ничего подозрительного тут не вижу.

А что есть в выхлопе ssh -vvv remote_host?

geladil ()
Ответ на: комментарий от ares4322

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

geladil ()
Ответ на: комментарий от ares4322

дружок, а не скопировал ли ты свой ключ с помощью ssh-copyid на шлюз? ведь ты не указал копиид номер порта 2222 и по умолчанию он стучал на 22 шлюза

uspen ★★★★★ ()
Ответ на: комментарий от uspen

порт уже прописан в .ssh/config так что явно порт можно не указывать, всё и так должно работать

zolden ★★★★★ ()
Ответ на: комментарий от uspen

Нет, дружок. Во-первых, шлюз - это маршрутизатор, а не отдельная машина, а во вторых я проверял наличие своего ключа на сервер

ares4322 ()
Ответ на: комментарий от ares4322
May 4 23:34:15 ntcserv sshd[5824]: debug1: trying public key file /home/ntcadmin/.ssh/authorized_keys2
May 4 23:34:15 ntcserv sshd[5824]: debug1: Could not open authorized keys '/home/ntcadmin/.ssh/authorized_keys2': No such file or directory

где authorized_keys2?

anonymous ()

а еще,

Agent admitted failure

посмотри, у тебя никакого gnome-keyring-а с прочими kwallet-ами не запущено? а если запущено, то нет ли в них ключей для того хоста?

aol ★★★★★ ()
Ответ на: комментарий от aol

Почему врет?
Я же через проброс портов делаю.
sshd принимает соединения на 22 порту, но устанавливаю соединение-то я с 2222 портом маршрутизатора

ares4322 ()
Ответ на: комментарий от ares4322

Я же через проброс портов делаю.

действительно. что-то я этот момент упустил.

ты проверил насчет wallet-oв? и вот это SSH с ключами через нестандартный внешний порт через и проброс портов на маршрутизаторе (комментарий) логи с сервера, или с клиента?
еслис сервера, попробуй то же самое выполнить на клиенте: ssh -vv other_params

aol ★★★★★ ()

я у себя открыл порт 66x на роутере, там же сделал проброс с внешнего 66x на внутренний 22 и все заработало

ms-dos32 ()
Ответ на: комментарий от aol

Надо будет посмотреть, может и у меня такая же ситуация. Спасибо.

ares4322 ()
Ответ на: комментарий от aol

Короче, ничего не помогло. Плюс ко всему, почему-то не принималась мой пароль для ключа (хотя я точно помню, что я его таким вводил и использовал). Я просто пересоздал ключи, перезалил их на сервер и все работает.
Всем спасибо!

ares4322 ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.