<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://wiki.cless.pro/index.php?action=history&amp;feed=atom&amp;title=Ssh._Hints</id>
	<title>Ssh. Hints - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.cless.pro/index.php?action=history&amp;feed=atom&amp;title=Ssh._Hints"/>
	<link rel="alternate" type="text/html" href="https://wiki.cless.pro/index.php?title=Ssh._Hints&amp;action=history"/>
	<updated>2026-10-22T22:44:42Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.36.2</generator>
	<entry>
		<id>https://wiki.cless.pro/index.php?title=Ssh._Hints&amp;diff=1830&amp;oldid=prev</id>
		<title>Cless: Новая страница: «= Подключение к SSH-серверу по определенному порту = &lt;code&gt;ssh '''-p 1234''' root@192.168.14.12&lt;/code&gt;  = Добавить...»</title>
		<link rel="alternate" type="text/html" href="https://wiki.cless.pro/index.php?title=Ssh._Hints&amp;diff=1830&amp;oldid=prev"/>
		<updated>2023-12-29T18:22:39Z</updated>

		<summary type="html">&lt;p&gt;Новая страница: «= Подключение к SSH-серверу по определенному порту = &amp;lt;code&amp;gt;ssh &amp;#039;&amp;#039;&amp;#039;-p 1234&amp;#039;&amp;#039;&amp;#039; root@192.168.14.12&amp;lt;/code&amp;gt;  = Добавить...»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= Подключение к SSH-серверу по определенному порту =&lt;br /&gt;
&amp;lt;code&amp;gt;ssh '''-p 1234''' root@192.168.14.12&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Добавить ключ сервера в known_hosts и выйти =&lt;br /&gt;
&amp;lt;code&amp;gt;ssh root@192.168.14.12 &amp;quot;exit&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Включить X11Forwarding для использования GUI VIRT-MANAGER (и запуска других программ на Linux) удаленно через SSH ==&lt;br /&gt;
&lt;br /&gt;
=== На сервере ===&lt;br /&gt;
&amp;lt;code&amp;gt;nano /etc/ssh/sshd_config&amp;lt;/code&amp;gt;&lt;br /&gt;
 ...&lt;br /&gt;
 X11Forwarding yes&lt;br /&gt;
 ...&lt;br /&gt;
&amp;lt;code&amp;gt;service sshd restart&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;yum install virt-manager xauth dejavu-lgc-sans-fonts&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== На клиенте Linux ===&lt;br /&gt;
&amp;lt;code&amp;gt;ssh -XY root@192.168.17.250 virt-manager&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== На клиенте windows запуск virt-manager через туннель ssh ===&lt;br /&gt;
Ставим в windows Xming (https://sourceforge.net/projects/xming/)&lt;br /&gt;
&lt;br /&gt;
Запускаем putty, в настройках Connection - SSH - X11 ставим галку Enable X11 Forwarding&lt;br /&gt;
&lt;br /&gt;
В консоли набираем: &amp;lt;code&amp;gt;virt-manager&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Монтирование по sshfs Centos&lt;br /&gt;
&lt;br /&gt;
Ставим репозиторий EPEL&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;rpm -Uvh &amp;lt;nowiki&amp;gt;http://fedora-mirror02.rbc.ru/pub/epel/5/i386/epel-release-5-4.noarch.rpm&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Устанавливаем&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;fuse&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;fuse-sshfs&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Монтируем ===&lt;br /&gt;
&lt;br /&gt;
==== Вариант 1 ====&lt;br /&gt;
&amp;lt;code&amp;gt;sshfs root@193.34.12.135:/home/userTMB /home/utmb/ -o reconnect&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Вариант 2 ====&lt;br /&gt;
&amp;lt;code&amp;gt;sshpass -p &amp;quot;PassWord#1&amp;quot; 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&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Включить/отключить авторизацию по публичным ключам =&lt;br /&gt;
&amp;lt;code&amp;gt;nano /etc/ssh/sshd_config&amp;lt;/code&amp;gt;&lt;br /&gt;
 ...&lt;br /&gt;
 PubkeyAuthentication [yes|no]&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
= Включить/отключить авторизацию по паролю =&lt;br /&gt;
&amp;lt;code&amp;gt;nano /etc/ssh/sshd_config&amp;lt;/code&amp;gt;&lt;br /&gt;
 ...&lt;br /&gt;
 PasswordAuthentication [yes|no]&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
= Беспарольная аутентификация ssh по ключам =&lt;br /&gt;
&lt;br /&gt;
=== На сервере SSH ===&lt;br /&gt;
mkdir ~/.ssh&lt;br /&gt;
&lt;br /&gt;
=== На клиенте SSH ===&lt;br /&gt;
Создаем ключи на клиенте&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ssh-keygen -t rsa&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   ИЛИ&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ssh-keygen -b 2048 -t rsa -f /root/.ssh/id_rsa -q -N &amp;quot;&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ключи были созданы в папке '''/root/.ssh/'''&lt;br /&gt;
&lt;br /&gt;
После этого нужно добавить ключ '''id_rsa.pub''' (содержимое файла) в список авторизованных ключей на сервер 192.168.1.1 (добавление строки в файл '''/root/.ssh/authorized_keys'''), к которому необходим беспарольный доступ&lt;br /&gt;
&lt;br /&gt;
При вводе этой команды будет первый и последний запрос пароля сервера, в следующий раз ввод пароля не понадобится:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;cat /root/.ssh/id_rsa.pub | ssh root@192.168.1.1 &amp;quot;cat - &amp;gt;&amp;gt; ~/.ssh/authorized_keys&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь можем заходить на сервер SSH без пароля&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ssh root@192.168.1.1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Неинтерактивная парольная аутентификация sshpass =&lt;br /&gt;
Установка&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;yum install sshpass&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Использование&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sshpass -p &amp;quot;password&amp;quot; ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null user$host&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sshpass -p &amp;quot;password&amp;quot; ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null user@host 'df -h' &amp;gt; /home/user/log.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Аутентификация по ключам + монтирование SSHFS =&lt;br /&gt;
Создайте точку монтирования, скажем, папку local в домашней директории&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;cd ~&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;mkdir local&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Монтируем&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sshfs user@192.168.1.1:/home/data /home/local&amp;lt;/code&amp;gt;&amp;lt;blockquote&amp;gt;Заметьте, монтирование происходит от имени обычного юзера (нет sudo перед командой монтирования)&amp;lt;/blockquote&amp;gt;здесь:&amp;lt;blockquote&amp;gt;'''user''' - это имя пользователя на удаленной машине&lt;br /&gt;
&lt;br /&gt;
'''192.168.1.1''' - IP удаленного компьютера&lt;br /&gt;
&lt;br /&gt;
'''/home/data''' - директория на удаленном компьютере&lt;br /&gt;
&lt;br /&gt;
'''/home/serhiy/local''' - точка монтирования на компьютере пользователя, куда будет монтирована /home/data.&amp;lt;/blockquote&amp;gt;После этого должно появиться приглашение&lt;br /&gt;
 The authenticity of host '192.168.1.1 (192.168.1.1)' can't be established.&lt;br /&gt;
 RSA key fingerprint is 28:a2:c5:8c:93:db:3c:95:1c:e0:90:c8:71:7f:53:43.&lt;br /&gt;
 Are you sure you want to continue connecting (yes/no)? yes&lt;br /&gt;
 alien@192.168.1.1's password:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Введите пароль пользователя '''user'''&amp;lt;/blockquote&amp;gt;Заходим в /home/local, гды вы должны увидеть содержимое /home/data удаленного компьютера.&lt;br /&gt;
&lt;br /&gt;
Если после ввода пароля Вы увидите запись&lt;br /&gt;
 fusermount: failed to open /dev/fuse: Permission denied&lt;br /&gt;
Это может быть связано с багом fuse. Для решения этой проблемы измените группу файла /dev/fuse на fuse:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo chgrp fuse /dev/fuse&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Отмонтировать&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;fusermount -u ~/local&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После запуска команды на монтирование приходится вводить пароль SSH (если вы не настроили доступ по ключам до этого). Это не очень удобно. Поэтому, для большего удобства, настроим соединение с помощью ключей. Для этого на компьютере пользователя:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;cd ~&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ssh-keygen -t rsa&amp;lt;/code&amp;gt;&lt;br /&gt;
 Generating public/private rsa key pair.&lt;br /&gt;
 Enter file in which to save the key (/home/user/.ssh/id_rsa):ENTER &lt;br /&gt;
 Enter passphrase (empty for no passphrase): ENTER &lt;br /&gt;
 Enter same passphrase again:  ENTER&lt;br /&gt;
 Your identification has been saved in /home/user/.ssh/id_rsa.&lt;br /&gt;
 Your public key has been saved in /home/user/.ssh/id_rsa.pub.&lt;br /&gt;
 The key fingerprint is:&lt;br /&gt;
 fa:e7:7c:e1:cb:7b:66:8b:67:07:05:99:7f:05:b9:4a&lt;br /&gt;
Ключи были созданы в папке .ssh. После этого нужно добавить ключ id_rsa.pub в список авторизованных ключей на сервер:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;cat ~/.ssh/id_rsa.pub | ssh user@192.168.1.1 &amp;quot;cat - &amp;gt;&amp;gt; .ssh/authorized_keys&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь можно подключиться к удаленному серверу, указав путь к паре ключей (id_rsa / id_rsa.pub)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ssh -i /root/rsa/id_rsa root@10.52.31.1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Таймаут при подключении =&lt;br /&gt;
&amp;lt;code&amp;gt;ssh -o ConnectTimeout=10 host&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Логи авторизации SSH =&lt;br /&gt;
&amp;lt;code&amp;gt;last&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;lastlog&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/var/log/secure&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Записи о неудачных попытках входа по SSH находятся в файлах '''/var/log/secure*'''. Достать их от туда можно так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;cat /var/log/secure* | grep 'Failed password' | grep sshd | awk '{print $1,$2}' | sort -k 1,1M -k 2n | uniq -c&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Не отображать WARNING: в консоли при подключении =&lt;br /&gt;
&amp;lt;code&amp;gt;ssh -q &amp;lt;HOST&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= ServerAliveCountMax =&lt;br /&gt;
        Sets the number of server alive messages (see below) which may be&lt;br /&gt;
&lt;br /&gt;
        sent without ssh(1) receiving any messages back from the server.&lt;br /&gt;
&lt;br /&gt;
        If this threshold is reached while server alive messages are&lt;br /&gt;
&lt;br /&gt;
        being sent, ssh will disconnect from the server, terminating the&lt;br /&gt;
&lt;br /&gt;
        session.  It is important to note that the use of server alive&lt;br /&gt;
&lt;br /&gt;
        messages is very different from TCPKeepAlive (below).  The server&lt;br /&gt;
&lt;br /&gt;
        alive messages are sent through the encrypted channel and there‐&lt;br /&gt;
&lt;br /&gt;
        fore will not be spoofable.  The TCP keepalive option enabled by&lt;br /&gt;
&lt;br /&gt;
        TCPKeepAlive is spoofable.  The server alive mechanism is valu‐&lt;br /&gt;
&lt;br /&gt;
        able when the client or server depend on knowing when a connec‐&lt;br /&gt;
&lt;br /&gt;
        tion has become inactive.&lt;br /&gt;
&lt;br /&gt;
        The default value is 3.  If, for example, ServerAliveInterval&lt;br /&gt;
&lt;br /&gt;
        (see below) is set to 15 and ServerAliveCountMax is left at the&lt;br /&gt;
&lt;br /&gt;
        default, if the server becomes unresponsive, ssh will disconnect&lt;br /&gt;
&lt;br /&gt;
        after approximately 45 seconds.  This option applies to protocol&lt;br /&gt;
&lt;br /&gt;
        version 2 only.&lt;br /&gt;
&lt;br /&gt;
= ServerAliveInterval =&lt;br /&gt;
        Sets a timeout interval in seconds after which if no data has&lt;br /&gt;
&lt;br /&gt;
        been received from the server, ssh(1) will send a message through&lt;br /&gt;
&lt;br /&gt;
        the encrypted channel to request a response from the server.  The&lt;br /&gt;
&lt;br /&gt;
        default is 0, indicating that these messages will not be sent to&lt;br /&gt;
&lt;br /&gt;
        the server.  This option applies to protocol version 2 only.&lt;br /&gt;
&lt;br /&gt;
= Ошибка =&lt;br /&gt;
Oct 16 08:59:45 openstack sshd[1214]: error: Could not load host key: /etc/ssh/ssh_host_rsa_key&lt;br /&gt;
&lt;br /&gt;
Oct 16 08:59:45 openstack sshd[1214]: error: Could not load host key: /etc/ssh/ssh_host_dsa_key&lt;br /&gt;
&lt;br /&gt;
Oct 16 08:59:45 openstack sshd[1214]: error: Could not load host key: /etc/ssh/ssh_host_ecdsa_key&lt;br /&gt;
&lt;br /&gt;
Oct 16 08:59:45 openstack sshd[1214]: fatal: No supported key exchange algorithms [preauth]&lt;br /&gt;
&lt;br /&gt;
=== Решение ===&lt;br /&gt;
Создаются ключи ssh в /etc/ssh/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo dpkg-reconfigure openssh-server&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Выполнить многострочную команду на удаленном сервере через подключение по SSH =&lt;br /&gt;
Одиночные кавычки вокруг 'HERE' нужны для того, чтобы можно было объявлять переменные командами на сервере SSH, иначе можно будет только использовать переменные объявленные на клиенте SSH&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 sshpass -p 'dispersia85D' ssh root@192.168.199.250 /bin/bash &amp;lt;&amp;lt; 'HERE'&lt;br /&gt;
  uname -a;&lt;br /&gt;
  echo $?;&lt;br /&gt;
  echo &amp;quot;$SHELL&amp;quot;;&lt;br /&gt;
  uname -a;&lt;br /&gt;
  /sbin/sysctl kern.disks;&lt;br /&gt;
  exit;&lt;br /&gt;
 HERE&lt;br /&gt;
Одновременное использование локальных или удаленных переменных&lt;br /&gt;
&lt;br /&gt;
Вызов локальной переменной: echo ${var1}&lt;br /&gt;
&lt;br /&gt;
Вызов удаленной переменной: echo \${var1}&lt;br /&gt;
 var1=&amp;quot;111&amp;quot;&lt;br /&gt;
 sshpass -p 'PassWord#1' ssh root@192.168.199.250 /bin/bash &amp;lt;&amp;lt; HERE&lt;br /&gt;
  var2=&amp;quot;222&amp;quot;;&lt;br /&gt;
  uname -a;&lt;br /&gt;
  echo $?;&lt;br /&gt;
  echo &amp;quot;$SHELL&amp;quot;;&lt;br /&gt;
  echo &amp;quot;\$SHELL&amp;quot;;&lt;br /&gt;
  uname -a;&lt;br /&gt;
  /sbin/sysctl kern.disks;&lt;br /&gt;
  echo ${var1}&lt;br /&gt;
  echo \${var2}&lt;br /&gt;
  exit;&lt;br /&gt;
 HERE&lt;br /&gt;
&lt;br /&gt;
= Не выводить предупреждение =&lt;br /&gt;
If this file doesn't exist, just create it&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;nano ~/.ssh/config&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   -OR-&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;nano /etc/ssh/ssh_config&amp;lt;/code&amp;gt;&lt;br /&gt;
 ...&lt;br /&gt;
 Host *&lt;br /&gt;
     StrictHostKeyChecking no    &lt;br /&gt;
&lt;br /&gt;
= Удалить хост из known_hosts =&lt;br /&gt;
&amp;lt;code&amp;gt;ssh-keygen -f &amp;quot;/home/cless/.ssh/known_hosts&amp;quot; -R 192.168.15.12&amp;lt;/code&amp;gt;&lt;br /&gt;
[[Категория:SSH]]&lt;br /&gt;
__ОБЯЗАТЕЛЬНОЕ_ОГЛАВЛЕНИЕ__&lt;br /&gt;
__БЕЗ_РЕДАКТИРОВАНИЯ_РАЗДЕЛА__&lt;/div&gt;</summary>
		<author><name>Cless</name></author>
	</entry>
</feed>