ssh
ssh -l username ...
- подключиться как пользователь такой-то.
Permission denied (publickey)
Вообще, набор тем для проверки: https://docs.github.com/en/authentication/troubleshooting-ssh/error-permission-denied-publickey
Если при ssh -vT git@example.server.name
получается много всего вроде бы ок, а в конце:
debug1: send_pubkey_test: no mutual signature algorithm
debug1: No more authentication methods to try.
git@example.server.name: Permission denied (publickey).
Вероятно, обновили ssh на версию, которая перестала по умолчанию признавать тип ключа, который используется. По нынешним временам это ssh-rsa. Так что надо включить их поддержку в конфиге или в конкретной команде:
PubkeyAcceptedKeyTypes +ssh-rsa
ssh -o 'PubkeyAcceptedKeyTypes +ssh-rsa' example.server.name
И всё станет ок, хотя это и считается небезопасным. По крайней мере, можно воспользоваться этим, чтобы загрузить более надёжный ключ.
(Заодно советуют добавлять HostkeyAlgorithms +ssh-rsa
. Ну, про запас сохраню :))
О выборе вида ключа - https://www.ssh.com/academy/ssh/keygen#choosing-an-algorithm-and-key-size
Запуск команды при подключении по ssh
попробуйте в ~/.ssh/authorized_keys перед ключем добавить замечательные команды
command="ваш скрипт" и куча опций на выбор no-port-forwarding no-X11-forwarding no-agent-forwarding no-pty и так далее man ssh
при подключении по ssh будет запускаться только скрипт
Сжатие ssh-трафика, инициируемое со стороны ssh-клиента.
Рулят, если вы туннелируете трафик по ssh, используете с той стороны ncurses или многотекста. Сильно много музыку по scp вы не сожмете, а вот пробрасывать иксы по ssh или использовать VNC через туннель становится обыденным и вполне комфортным делом.
В конец файла /etc/ssh/ssh_config добавляем 2 строки:
Compression yes CompressionLevel 9
Применится к новым соединениям, вроде.
Port knocking
knock <host> 3000 4000 5000 && ssh -p <port> user@host && knock <host> 5000 4000 3000
This is sample output - yours may be different.
Knock on ports to open a port to a service (ssh for example) and knock again to close the port. You have to install knockd.
See example config file below.
[options] logfile = /var/log/knockd.log [openSSH] sequence = 3000,4000,5000 seq_timeout = 5 command = /sbin/iptables -A INPUT -i eth0 -s %IP% -p tcp --dport 22 -j ACCEPT tcpflags = syn [closeSSH] sequence = 5000,4000,3000 seq_timeout = 5 command = /sbin/iptables -D INPUT -i eth0 -s %IP% -p tcp --dport 22 -j ACCEPT tcpflags = syn
Быстро настроить логин по ключу
Если нет ключей, то генерируем:
ssh-keygen
Раньше нужно было apt-get install ssh-copy-id
, но сейчас (2023-04-06) оно не отдельный пакет, просто есть.
ssh-copy-id -i ~/.ssh/id_rsa.pub user@some.server.org
SSH через прокси - Сorkscrew
(впервые нашла тему
)
Отредактировать файл ~/.ssh/config
Host myhost ProxyCommand corkscrew proxy-address proxy-port %h %p
на место %h подставится адрес хоста, на место %p - порт.
Если потребуется аутентификация прокси, то необходимо создать файл (например, ~/.ssh/proxyauth
) и записать в нём строчку: username:password
Сам же конфиг SSH изменится так:
Host myhost.zone ProxyCommand corkscrew proxy-address proxy-port %h %p ~/.ssh/proxyauth
После этого можно спокойно коннектиться на нужный хост:
ssh myhost
SSH через tor
В конфиг:
Host shortname
HostName longlonglongname.onion
ProxyCommand socat - SOCKS4A:localhost:%h:%p,socksport=9050
Port 11111
Альтернативный вариант с netcat, только измененная строка:
ProxyCommand nc -X 5 -x 127.0.0.1:9050 %h %p
Ссылки
- https://habr.com/ru/companies/ruvds/articles/770792/ - про неочевидное, что ssh не палит наружу с недавних пор.
- https://github.com/rom1v/rsshfs – sshfs через обратный туннель