Stylesheet conf/userstyle.css not found, please contact the developer of "dokuwiki_2024" template.
linux:terminal:terminal_tnt_ssh
Различия
Показаны различия между двумя версиями страницы.
linux:terminal:terminal_tnt_ssh [2021/09/29 12:11] – внешнее изменение 127.0.0.1 | linux:terminal:terminal_tnt_ssh [2021/11/27 03:30] (текущий) – dx | ||
---|---|---|---|
Строка 1: | Строка 1: | ||
+ | ====== Трюки в консоли: | ||
+ | {{mdi> | ||
+ | |||
+ | {{tag> | ||
+ | |||
+ | ===== Запуск команды перед установкой SSH соединения ===== | ||
+ | |||
+ | * https:// | ||
+ | * https:// | ||
+ | |||
+ | Например если настроен port knocking. Используем **ProxyCommand** в '' | ||
+ | |||
+ | < | ||
+ | Host foobar | ||
+ | User john | ||
+ | Hostname foobar.com | ||
+ | ProxyCommand bash -c '/ | ||
+ | </ | ||
+ | |||
+ | * %h - hostname | ||
+ | * %p - port | ||
+ | |||
+ | ===== Несколько SSH ключей для одного пользователя ===== | ||
+ | |||
+ | < | ||
+ | ssh-keygen -t rsa -f ~/ | ||
+ | ssh-keygen -t rsa -f ~/ | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | Host home | ||
+ | Hostname home.example.com | ||
+ | IdentityFile ~/ | ||
+ | User <your home acct> | ||
+ | |||
+ | Host work | ||
+ | Hostname work.example.com | ||
+ | IdentityFile ~/ | ||
+ | User <your work acct> | ||
+ | </ | ||
+ | |||
+ | ===== Как поменять passphrase для SSH ключа ===== | ||
+ | |||
+ | Если есть локальный доступ к ключу, то делаем | ||
+ | |||
+ | < | ||
+ | |||
+ | И вводим новый passphrase. | ||
+ | |||
+ | ===== EscapeChar для зависших сессий ===== | ||
+ | |||
+ | < | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | </ | ||
+ | |||
+ | https:// | ||
+ | |||
+ | // | ||
+ | |||
+ | FIXME | ||
+ | * https:// | ||
+ | * https:// | ||
+ | * https:// | ||
+ | |||
+ | ===== ssh сервер на нескольких портах ===== | ||
+ | |||
+ | В файл ''/ | ||
+ | |||
+ | < | ||
+ | |||
+ | После чего в netstat будет видно, что SSH доступен одновременно по 22 и 1337. | ||
+ | |||
+ | < | ||
+ | # netstat -plunt | grep ssh | ||
+ | tcp 0 0 0.0.0.0: | ||
+ | tcp 0 0 0.0.0.0: | ||
+ | tcp6 | ||
+ | tcp6 | ||
+ | </ | ||
+ | |||
+ | Можно настроить SFTP на отдельном порту (SSH будет на 22) | ||
+ | |||
+ | < | ||
+ | Subsystem sftp internal-sftp | ||
+ | |||
+ | Match LocalPort 1337 | ||
+ | AllowTCPForwarding no | ||
+ | X11Forwarding no | ||
+ | ForceCommand internal-sftp | ||
+ | </ | ||
+ | |||
+ | Также можно запустить несколько SSH сервисов каждый со своим конфигом FIXME | ||
+ | |||
+ | Делаем симлинки | ||
+ | |||
+ | < | ||
+ | ln -s / | ||
+ | ln -s / | ||
+ | </ | ||
+ | |||
+ | Копируем конфиг и устанавливаем **Port 1337** | ||
+ | |||
+ | < | ||
+ | |||
+ | Копируем systemd сервис | ||
+ | |||
+ | < | ||
+ | |||
+ | и меняем | ||
+ | |||
+ | < | ||
+ | EnvironmentFile=/ | ||
+ | ExecStart=/ | ||
+ | </ | ||
+ | |||
+ | Создаем файл ''/ | ||
+ | |||
+ | < | ||
+ | SSH_USE_STRONG_RNG=0 | ||
+ | OPTIONS=" | ||
+ | </ | ||
+ | |||
+ | Запускаем новый systemd сервис | ||
+ | |||
+ | < | ||
+ | systemctl daemon-reload | ||
+ | systemctl enable sshd_sftp.service | ||
+ | systemctl start sshd_sftp.service | ||
+ | </ | ||
+ | |||
+ | Проверяем в netstat | ||
+ | |||
+ | < | ||
+ | # netstat -plunt | grep ssh | ||
+ | tcp 0 0 0.0.0.0: | ||
+ | tcp 0 0 0.0.0.0: | ||
+ | tcp6 | ||
+ | tcp6 | ||
+ | </ | ||
+ | |||
+ | Вероятно надо еще проверить работу syslog, остается в todo. | ||
+ | |||
+ | ===== Разрешить доступ root только с одного IP ===== | ||
+ | |||
+ | Запрещаем доступ по SSH пользователю root через опцию **PermitRootLogin no** | ||
+ | |||
+ | Добавляем в файл ''/ | ||
+ | |||
+ | < | ||
+ | Match Host my_hostname | ||
+ | | ||
+ | </ | ||
+ | |||
+ | или так | ||
+ | |||
+ | < | ||
+ | Match Address 192.168.10.25 | ||
+ | | ||
+ | </ | ||
+ | |||
+ | ===== Разрешить доступ root только по открытому ключу ===== | ||
+ | |||
+ | Добавляем в файл ''/ | ||
+ | |||
+ | < | ||
+ | Match Address 192.168.10.25 | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | |||
+ | Опция **without-password**, | ||
+ | |||
+ | Еще пример. Вход по паролю запрещен глобально. Нужно разрешить доступ пользователю john с нескольких адресов | ||
+ | |||
+ | < | ||
+ | PermitRootLogin no | ||
+ | PermitEmptyPasswords no | ||
+ | PasswordAuthentication no | ||
+ | |||
+ | Match User john Address 192.168.1.0/ | ||
+ | PasswordAuthentication yes | ||
+ | </ | ||
+ | |||
+ | ===== rsync error: remote command not found (code 127) ===== | ||
+ | |||
+ | При переносе архива на удаленный сервер с помощью rsync | ||
+ | |||
+ | < | ||
+ | |||
+ | появляется ошибка | ||
+ | |||
+ | < | ||
+ | bash: rsync: command not found | ||
+ | rsync: connection unexpectedly closed (0 bytes received so far) [sender] | ||
+ | rsync error: remote command not found (code 127) at io.c(605) [sender=3.0.9] | ||
+ | </ | ||
+ | |||
+ | При использовании транспортного протокола ssh при копирования файлов rsync должен быть установлен с двух сторон. | ||
+ | |||
+ | ===== Узнать внутренний и внешний IP из консоли (OSX) ===== | ||
+ | |||
+ | Для удобства добавил алиасы в '' | ||
+ | |||
+ | < | ||
+ | alias intip=" | ||
+ | alias extip=" | ||
+ | </ | ||
+ | |||
+ | Про интерфейсы [[https:// | ||
+ | |||
+ | ===== POSSIBLE BREAK-IN ATTEMPT ===== | ||
+ | |||
+ | http:// | ||
+ | |||
+ | ===== Как закрыть пользовательскую SSH сессию (pts) ===== | ||
+ | |||
+ | * http:// | ||
+ | * https:// | ||
+ | |||
+ | < | ||
+ | [~]# w | ||
+ | | ||
+ | USER | ||
+ | secure | ||
+ | secure | ||
+ | [~]# pkill -HUP -t pts/0 | ||
+ | </ | ||
+ | |||
+ | ===== В консоли бнопня и кракозябры ===== | ||
+ | |||
+ | Если к примеру прочитать бинарный файл через cat, more или less or, то в ответ мы получим бнопню и консоль перестанет работать. | ||
+ | |||
+ | Нажимаем < | ||
+ | |||
+ | Нашёл [[http:// | ||
+ | |||
+ | Делаем алиас в '' | ||
+ | |||
+ | < | ||
+ | |||
+ | Как всё сломается, | ||
+ | |||
+ | ===== Email уведомление о входе в систему ===== | ||
+ | |||
+ | < | ||
+ | if [ " | ||
+ | DATE=`date` | ||
+ | IP=`echo $SSH_CLIENT | ||
+ | USER=`id -un` | ||
+ | echo -e "User: $USER\nIP: $IP\nDate: $DATE" | mail -s "" | ||
+ | fi | ||
+ | </ | ||
+ | |||
+ | ===== server refused to start a shell ===== | ||
+ | |||
+ | Надо больше памяти | ||
+ | |||
+ | Лог | ||
+ | |||
+ | < | ||
+ | < | ||
+ | [2761174.913903] systemd[1]: apt-daily.service: | ||
+ | [2761174.958250] systemd[1]: apt-daily.service: | ||
+ | ... | ||
+ | [2762122.429047] systemd[1]: phpsessionclean.service: | ||
+ | [2762122.484064] systemd[1]: phpsessionclean.service: | ||
+ | [2762122.537514] systemd[1]: Failed to start Clean php session files. | ||
+ | [2762122.572386] systemd[1]: phpsessionclean.service: | ||
+ | [2762122.612237] systemd[1]: phpsessionclean.service: | ||
+ | ... | ||
+ | [2772386.221701] systemd[1]: Created slice User Slice of bob. | ||
+ | [2772386.257589] systemd[1]: [email protected]: | ||
+ | [2772386.299359] systemd[1]: [email protected]: | ||
+ | [2772386.343392] systemd[1]: Failed to start User Manager for UID 1001. | ||
+ | [2772386.371912] systemd[1]: [email protected]: | ||
+ | [2772386.402837] systemd[1]: [email protected]: | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | {{tag> |