Я настроил удаленный сервер, который автоматически подключается к локальному серверу через autossh
:
sudo autossh -M 10984 -N -f -o "PubkeyAuthentication = yes" -o "PasswordAuthentication = нет" -i /root/.ssh/nopwd -R 6666:localhost:22 @ -p &
Я настроил команду autossh выше в rc.local:
#!/bin/sh -e
#
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
autossh -M 10984 -N -f -o "PubkeyAuthentication=yes" -o
"PasswordAuthentication=no" -i /root/.ssh/nopwd -R 6666:localhost:22
<username>@<domain> -p portNumber &
exit 0
Затем я создал локальный rc-сервис:sudo vi /etc/systemd/system/rc-local.service
#add the following lines
[Unit]
Description=/etc/rc.local Compatibility
ConditionPathExists=/etc/rc.local
[Service]
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
StandardOutput=tty
RemainAfterExit=yes
SysVStartPriority=99
[Install]
WantedBy=multi-user.target
Затем я сказал службе запускаться при каждой загрузке:
sudo systemctl включить rc-local
Удаленный сервер подключается через ssh при загрузке, а затем успешно поддерживает соединение:
Netstat показывает: tcp 0 0 0.0.0.0:6666 0.0.0.0:* LISTEN 22542/sshd
Теперь я пытаюсь подключиться к 6666 на моем локальном сервере:
ssh root@127.0.0.1 -p 6666
Я получаю следующую ошибку: ssh_exchange_identification: чтение: сброс соединения по пиру
Когда я ssh с установленным параметром -vvv, я получаю следующие журналы отладки:
# ssh -vvv 127.0.0.1 -p 6666
OpenSSH_7.6p1 Debian-2, OpenSSL 1.0.2l 25 May 2017
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug2: resolving "127.0.0.1" port 6666
debug2: ssh_connect_direct: needpriv 0
debug1: Connecting to 127.0.0.1 [127.0.0.1] port 6666.
debug1: Connection established.
debug1: permanently_set_uid: 0/0
debug1: identity file /root/.ssh/id_rsa type 0
debug1: key_load_public: No such file or directory
debug1: identity file /root/.ssh/id_rsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /root/.ssh/id_dsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /root/.ssh/id_dsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /root/.ssh/id_ecdsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /root/.ssh/id_ecdsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /root/.ssh/id_ed25519 type -1
debug1: key_load_public: No such file or directory
debug1: identity file /root/.ssh/id_ed25519-cert type -1
debug1: Local version string SSH-2.0-OpenSSH_7.6p1 Debian-2
ssh_exchange_identification: read: Connection reset by peer
Однако, если я убью соединение ssh на обоих концах (локальное и удаленное). И затем восстановите обратное соединение ssh с удаленного сервера:
autossh -M 10984 -N -f -o "PubkeyAuthentication = да" -o "PasswordAuthentication = нет" -i /root/.ssh/nopwd -R 6666:localhost:22 @ -p portNumber &
Туннель успешно построен. И тогда я могу ssh через 127.0.0.1 -p 6666 успешно.
ssh root@127.0.0.1 -p 6666 Последний вход в систему: Вс Дек 17 10:50:29 2017 с :: 1
Мне нужна эта работа при загрузке без ручного вмешательства. Что я делаю неправильно?