openssh
Чтобы отключиться от зависшей SSH сессии необходимо нажать последовательно на клавиатуре (Ввод,тильда,точка): [Enter], [~], [.]
/etc/ssh/sshd_config
AllowGroups sudo #разрешить подключаться только группе sudo
ssh -f -N -R 2222:10.11.12.13:22 username@99.88.77.66
теперь введя на хосте 99.88.77.66:
ssh -p2222 localhost
мы попадём на хост 10.11.12.13.
Таким-же образом можно получить доступ к любому другому ресурсу, например:
ssh -f -N -R 2080:10.11.12.14:80 username@99.88.77.66
Введя на хосте 99.88.77.66:
w3m -dump http://localhost:2080
получим дамп web-ресурса на 10.11.12.14.
ssh -f -N -L 4080:192.168.0.10:80 nameuser@88.77.66.55
Аналогично, вводим на своём хосте:
w3m -dump http://localhost:4080
и получаем доступ к web-ресурсу узла 192.168.0.10, который находится за хостом 88.77.66.55.
SSH тунели - http://habrahabr.ru/post/81607/
Генерируем ключ на том сервере под тем пользователем от которого будем входить по ключу:
ssh-keygen -C "$(whoami)@$(hostname)-$(date -I)"
И копируем его на удалённую систему куда будем заходить и под каким пользователем (без параметра -i скопирует все публичные ключи из ~/.ssh/):
ssh-copy-id -i ~/.ssh/ansible_rsa ansible@server
или
cat ~/.ssh/id_rsa.pub | ssh ansible@server "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
Подключиться с указанием ключа:
ssh -i ~/.ssh/id_rsa ansible@server
AuthorizedKeysFile если не задан в /etc/ssh/sshd_config, то имеет значение по умолчанию: %h/.ssh/authorized_keys
На сервере куда будем подключаться с помощью ключа.
Вместо ~/.ssh/authorized_keys установить /etc/ssh/%u/authorized_keys:
echo AuthorizedKeysFile /etc/ssh/%u/authorized_keys | sudo tee -a /etc/ssh/sshd_config
ssh-copy-id при этом будет копировать ключ в ~/.ssh/authorized_keys
Поэтому необходимо ключ переносить с помощью scp
/etc/ssh/%u/authorized_keys - права на файл 600, должен принадлежать пользователю под которым идёт подключению.
ssh $host -o 'IdentitiesOnly=yes'
Удалить хэш определённого хоста:
ssh-keygen -R $HOST
Добавлять хэш без запроса для новых хостов:
ssh $host -o 'StrictHostKeyChecking accept-new'
Добавлять хэш без запроса для всех хостов (не рекомендуется):
ssh $host -o 'StrictHostKeyChecking no'
Не добавлять хэш в файл .ssh/known_hosts:
ssh $host -o 'UserKnownHostsFile /dev/null'
https://habr.com/ru/post/421477/ - Что записано в файле .ssh/known_hosts
Для полного приветствия устанавливаем:
sudo apt-get install landscape-common update-notifier-common
Вид landsacpe-common:
System information as of Thu Sep 11 13:40:20 YEKT 2014
System load: 0.29 Processes: 292
Usage of /: 68.8% of 27.74GB Users logged in: 1
Memory usage: 10% IP address for eth1: 192.168.203.5
Swap usage: 0% IP address for xenbr0: 192.168.10.110
Graph this data and manage this system at:
https://landscape.canonical.com/
Вид update-notifier-common:
6 packages can be updated. 6 updates are security updates.
Доступное шифрование на сервере:
nmap --script ssh2-enum-algos -sV -p 22 localhost
nohup — UNIX-утилита, запускающая указанную команду с игнорированием сигналов потери связи (hangup)таким образом, команда будет продолжать выполняться в фоновом режиме и после того, как пользователь выйдет из системы.
nohup command -parm &
Отправим всплывающее графическое сообщение (notify-send), которое будет показано на экране удаленного компьютера :
ssh 192.168.0.100 'DISPLAY=:0 nohup notify-send "Hello" "World"'
Запустим музыкальный плеер (rhythmbox) на удаленном компьютере :
ssh 192.168.0.100 'DISPLAY=:0 nohup rhythmbox ./Smoke-on-the-Water.mp3'
Отправить нулевой пакет каждые 300 секунд (5 минут) до 2 неудачных попыток:
на клиенте в ~/.ssh/config (или для всех пользователей /etc/ssh/ssh_config):
Host * ServerAliveInterval 300 ServerAliveCountMax 2
на сервере в /etc/ssh/sshd_config:
ClientAliveInterval 300 ClientAliveCountMax 2
type %userprofile%\.ssh\id_rsa.pub | ssh username@hostname "umask 077; test -d .ssh || mkdir .ssh ; cat >> .ssh/authorized_keys"
ssh $host powershell -command 'New-Item "$env:USERPROFILE\.ssh" -type directory -Force' scp ~/.ssh/id_rsa.pub $host:.ssh/authorized_keys ssh $host powershell -command '(Get-Item "$env:USERPROFILE\.ssh").Attributes += \"Hidden\"' ssh $host powershell -command \"'(Get-Content "$env:PROGRAMDATA\ssh\sshd_config") -replace \"^[#\s]*PasswordAuthentication\s+.*\" , \"PasswordAuthentication no\" | Set-Content "$env:PROGRAMDATA\ssh\sshd_config"; Restart-Service -Name "sshd"'\"
icacls $env:USERPROFILE\.ssh\authorized_keys /reset icacls $env:USERPROFILE\.ssh\authorized_keys /grant SYSTEM:F icacls $env:USERPROFILE\.ssh\authorized_keys /grant $env:USERNAME":F" icacls $env:USERPROFILE\.ssh\authorized_keys /inheritance:r
$currentPath = [Environment]::GetEnvironmentVariable("PATH", "Machine") [Environment]::SetEnvironmentVariable("PATH", "$currentPath;$env:PROGRAMFILES\OpenSSH;$env:PROGRAMFILES\OpenSSH-Win64", "Machine")
Установить оболочку по умолчанию powershell:
reg ADD "HKLM\SOFTWARE\OpenSSH" /v DefaultShell /t REG_SZ /d "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" /f
или
New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -PropertyType String -Force
При подключении:
Unable to negotiate with $IP port 22: no matching host key type found. Their offer: ssh-rsa
Решение:
ssh -oHostKeyAlgorithms=+ssh-rsa $IP
При подключении по ключу:
sign_and_send_pubkey: no mutual signature supported
Решение:
ssh -oPubkeyAcceptedKeyTypes=ssh-rsa $IP #или ssh -oHostKeyAlgorithms=ssh-rsa $IP