Ssh. Hints

Материал из Wiki
Перейти к навигации Перейти к поиску

Подключение к SSH-серверу по определенному порту

ssh -p 1234 root@192.168.14.12

Добавить ключ сервера в known_hosts и выйти

ssh root@192.168.14.12 "exit"

Включить X11Forwarding для использования GUI VIRT-MANAGER (и запуска других программ на Linux) удаленно через SSH

На сервере

nano /etc/ssh/sshd_config

...
X11Forwarding yes
...

service sshd restart

yum install virt-manager xauth dejavu-lgc-sans-fonts

На клиенте Linux

ssh -XY root@192.168.17.250 virt-manager

На клиенте windows запуск virt-manager через туннель ssh

Ставим в windows Xming (https://sourceforge.net/projects/xming/)

Запускаем putty, в настройках Connection - SSH - X11 ставим галку Enable X11 Forwarding

В консоли набираем: virt-manager

Монтирование по sshfs Centos

Ставим репозиторий EPEL

rpm -Uvh http://fedora-mirror02.rbc.ru/pub/epel/5/i386/epel-release-5-4.noarch.rpm

Устанавливаем

fuse

fuse-sshfs

Монтируем

Вариант 1

sshfs root@193.34.12.135:/home/userTMB /home/utmb/ -o reconnect

Вариант 2

sshpass -p "PassWord#1" sshfs -d -o allow_other -o ServerAliveInterval=15 root@192.168.17.12:/mnt /mnt/ssh/192.168.17.12 -o reconnect -C -o workaround=all

Включить/отключить авторизацию по публичным ключам

nano /etc/ssh/sshd_config

...
PubkeyAuthentication [yes|no]
...

Включить/отключить авторизацию по паролю

nano /etc/ssh/sshd_config

...
PasswordAuthentication [yes|no]
...

Беспарольная аутентификация ssh по ключам

На сервере SSH

mkdir ~/.ssh

На клиенте SSH

Создаем ключи на клиенте

ssh-keygen -t rsa

   ИЛИ

ssh-keygen -b 2048 -t rsa -f /root/.ssh/id_rsa -q -N ""

Ключи были созданы в папке /root/.ssh/

После этого нужно добавить ключ id_rsa.pub (содержимое файла) в список авторизованных ключей на сервер 192.168.1.1 (добавление строки в файл /root/.ssh/authorized_keys), к которому необходим беспарольный доступ

При вводе этой команды будет первый и последний запрос пароля сервера, в следующий раз ввод пароля не понадобится:

cat /root/.ssh/id_rsa.pub | ssh root@192.168.1.1 "cat - >> ~/.ssh/authorized_keys"

Теперь можем заходить на сервер SSH без пароля

ssh root@192.168.1.1

Неинтерактивная парольная аутентификация sshpass

Установка

yum install sshpass

Использование

sshpass -p "password" ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null user$host

sshpass -p "password" ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null user@host 'df -h' > /home/user/log.txt

Аутентификация по ключам + монтирование SSHFS

Создайте точку монтирования, скажем, папку local в домашней директории

cd ~

mkdir local

Монтируем

sshfs user@192.168.1.1:/home/data /home/local

Заметьте, монтирование происходит от имени обычного юзера (нет sudo перед командой монтирования)

здесь:

user - это имя пользователя на удаленной машине

192.168.1.1 - IP удаленного компьютера

/home/data - директория на удаленном компьютере

/home/serhiy/local - точка монтирования на компьютере пользователя, куда будет монтирована /home/data.

После этого должно появиться приглашение

The authenticity of host '192.168.1.1 (192.168.1.1)' can't be established.
RSA key fingerprint is 28:a2:c5:8c:93:db:3c:95:1c:e0:90:c8:71:7f:53:43.
Are you sure you want to continue connecting (yes/no)? yes
alien@192.168.1.1's password:

Введите пароль пользователя user

Заходим в /home/local, гды вы должны увидеть содержимое /home/data удаленного компьютера.

Если после ввода пароля Вы увидите запись

fusermount: failed to open /dev/fuse: Permission denied

Это может быть связано с багом fuse. Для решения этой проблемы измените группу файла /dev/fuse на fuse:

sudo chgrp fuse /dev/fuse

Отмонтировать

fusermount -u ~/local

После запуска команды на монтирование приходится вводить пароль SSH (если вы не настроили доступ по ключам до этого). Это не очень удобно. Поэтому, для большего удобства, настроим соединение с помощью ключей. Для этого на компьютере пользователя:

cd ~

ssh-keygen -t rsa

Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa):ENTER 
Enter passphrase (empty for no passphrase): ENTER 
Enter same passphrase again:  ENTER
Your identification has been saved in /home/user/.ssh/id_rsa.
Your public key has been saved in /home/user/.ssh/id_rsa.pub.
The key fingerprint is:
fa:e7:7c:e1:cb:7b:66:8b:67:07:05:99:7f:05:b9:4a

Ключи были созданы в папке .ssh. После этого нужно добавить ключ id_rsa.pub в список авторизованных ключей на сервер:

cat ~/.ssh/id_rsa.pub | ssh user@192.168.1.1 "cat - >> .ssh/authorized_keys"

Теперь можно подключиться к удаленному серверу, указав путь к паре ключей (id_rsa / id_rsa.pub)

ssh -i /root/rsa/id_rsa root@10.52.31.1

Таймаут при подключении

ssh -o ConnectTimeout=10 host

Логи авторизации SSH

last

lastlog

/var/log/secure

Записи о неудачных попытках входа по SSH находятся в файлах /var/log/secure*. Достать их от туда можно так:

cat /var/log/secure* | grep 'Failed password' | grep sshd | awk '{print $1,$2}' | sort -k 1,1M -k 2n | uniq -c

Не отображать WARNING: в консоли при подключении

ssh -q <HOST>

ServerAliveCountMax

        Sets the number of server alive messages (see below) which may be

        sent without ssh(1) receiving any messages back from the server.

        If this threshold is reached while server alive messages are

        being sent, ssh will disconnect from the server, terminating the

        session.  It is important to note that the use of server alive

        messages is very different from TCPKeepAlive (below).  The server

        alive messages are sent through the encrypted channel and there‐

        fore will not be spoofable.  The TCP keepalive option enabled by

        TCPKeepAlive is spoofable.  The server alive mechanism is valu‐

        able when the client or server depend on knowing when a connec‐

        tion has become inactive.

        The default value is 3.  If, for example, ServerAliveInterval

        (see below) is set to 15 and ServerAliveCountMax is left at the

        default, if the server becomes unresponsive, ssh will disconnect

        after approximately 45 seconds.  This option applies to protocol

        version 2 only.

ServerAliveInterval

        Sets a timeout interval in seconds after which if no data has

        been received from the server, ssh(1) will send a message through

        the encrypted channel to request a response from the server.  The

        default is 0, indicating that these messages will not be sent to

        the server.  This option applies to protocol version 2 only.

Ошибка

Oct 16 08:59:45 openstack sshd[1214]: error: Could not load host key: /etc/ssh/ssh_host_rsa_key

Oct 16 08:59:45 openstack sshd[1214]: error: Could not load host key: /etc/ssh/ssh_host_dsa_key

Oct 16 08:59:45 openstack sshd[1214]: error: Could not load host key: /etc/ssh/ssh_host_ecdsa_key

Oct 16 08:59:45 openstack sshd[1214]: fatal: No supported key exchange algorithms [preauth]

Решение

Создаются ключи ssh в /etc/ssh/

sudo dpkg-reconfigure openssh-server

Выполнить многострочную команду на удаленном сервере через подключение по SSH

Одиночные кавычки вокруг 'HERE' нужны для того, чтобы можно было объявлять переменные командами на сервере SSH, иначе можно будет только использовать переменные объявленные на клиенте SSH

#!/bin/bash
sshpass -p 'dispersia85D' ssh root@192.168.199.250 /bin/bash << 'HERE'
 uname -a;
 echo $?;
 echo "$SHELL";
 uname -a;
 /sbin/sysctl kern.disks;
 exit;
HERE

Одновременное использование локальных или удаленных переменных

Вызов локальной переменной: echo ${var1}

Вызов удаленной переменной: echo \${var1}

var1="111"
sshpass -p 'PassWord#1' ssh root@192.168.199.250 /bin/bash << HERE
 var2="222";
 uname -a;
 echo $?;
 echo "$SHELL";
 echo "\$SHELL";
 uname -a;
 /sbin/sysctl kern.disks;
 echo ${var1}
 echo \${var2}
 exit;
HERE

Не выводить предупреждение

If this file doesn't exist, just create it

nano ~/.ssh/config

   -OR-

nano /etc/ssh/ssh_config

...
Host *
    StrictHostKeyChecking no    

Удалить хост из known_hosts

ssh-keygen -f "/home/cless/.ssh/known_hosts" -R 192.168.15.12