Как мне получить доступ к стороне клиента SSH со стороны сервера SSH? [dубликат]

Вы можете сделать это с помощью tasket:

taskset 0x03 your_command

запустит your_command на процессоре # 0 и # 1.

2
задан 4 May 2018 в 23:42

4 ответа

Как сказал @terdon, вы можете использовать следующую команду для выполнения чего-либо на удаленном сервере через SSH и сохранения (перенаправления) вывода в локальный экземпляр:

UserA@HostA:~$ ssh UserB@HostB ls ~ > /home/UserA/ls-of-home-UserB.txt

Также вы можете использовать следующие команда выполнить что-то в локальном экземпляре и передать вывод на удаленный сервер и сохранить его командой tee:

UserA@HostA:~$ ls ~ | ssh UserB@HostB tee /home/UserB/ls-of-home-UserA.txt

Я @terdon @Sebastian Stark, вы, вероятно, спрашиваете, как создать туннель с пересылкой портов SSH. Соединение SSH позволяет привязать порт на удаленном сервере к порту на локальном, используя опцию -R. И наоборот, вы можете привязать локальный порт к удаленному порту с помощью -L.

В вашем случае должен быть применен первый сценарий с использованием опции -R:

UserA@HostA:~$ ssh UserB@HostB -R 2222:localhost:22

Эта команда установит соединение от HostA до HostB, как обычно, и свяжет порт 2222 на HostB с портом 22 на интерфейсе loopback на HostA. Это означает, что когда вы запрашиваете что-то на порту 2222 на HostB, запрос будет обрабатываться службой, которая прослушивает порт 22 на HostA, обычно это SSH-сервер. На этом этапе вы сможете использовать некоторые из следующих команд для подключения обратно с HostB до HostA:

UserB@HostB:~$ ssh UserA@HostB -p 2222 UserB@HostB:~$ ssh UserA@localhost -p 2222

Или вы можете использовать приведенные выше команды, например: [!d21 ] UserB@HostB:~$ ls ~ | ssh UserA@localhost -p 2222 tee /home/UserA/ls-of-home-UserB.txt

remote

Одно интересное использование заключается в том, что вы можете привязать удаленный порт на HostB к порту на другом экземпляре в локальная сеть HostA:

UserA@HostA:~$ ssh UserB@HostB -fTN -R 3389:192.168.100.115:3389

Где 192.168.100.115 - это IP-адрес на любом компьютере под управлением Windows в локальной сети HostA, назовем его HostC. Опции -fTN будут вызывать ssh-соединение в фоновом режиме, и у вас будет только туннель от HostB:3389 до HostA до HostC:3389.

Я используя эту комбинацию с autossh, чтобы поддерживать соединение в живом состоянии. Например, у меня есть следующая строка в моем crontab:

@reboot sleep 15 && autossh remote-server-with-public-ip -fTN

Где remote-server-with-public-ip - это что-то , определенное в моем ~/.ssh/config файле на HostA: [ ! d29]

Host remote-server-with-public-ip
    HostName hostB
    IdentityFile ~/.ssh/hostB/id_rsa
    User userB
    Port 22
    RemoteForward 2223 127.0.0.1:22
    RemoteForward 8080 127.0.0.1:80
    RemoteForward 6900 127.0.0.1:5900
    RemoteForward 3389 192.168.100.115:3389

Порты 2223, 6900, 3389 в HostB не являются общедоступными, и я могу получить к ним доступ только через другое соединение SSH - например, из HostD, которое находится где-то на Интернет. Но для доступа к 8080 я использую Apache с обратным прокси-сервером на HostB :-), а файл конфигурации виртуального хоста выглядит следующим образом:

<VirtualHost _default_:443>

    ServerName forward.example.com
    # Other configuration directives

    SSLEngine on
    # SSL certificate files

    ProxyRequests Off
    <Proxy *>
        Order deny,allow
        Allow from all
    </Proxy>

    ProxyPass "/"  "http://localhost:8080/"
    ProxyPassReverse "/"  "http://localhost:8080/"

    <Location />
        Order allow,deny
        Allow from all
    </Location>

</VirtualHost>
Модули Apache proxy и [f49 ] необходимы.

Дальнейшее чтение:

Требуются модули Apache proxy и proxy_http. Создание сценария .sh для проверьте, существует ли соединение SSH, а если нет, то используйте «Исходящий SSH» для приема входящего SSH
2
ответ дан 22 May 2018 в 10:59
  • 1
    Спасибо за этот обширный ответ. Довольно много вариантов. И я должен признать, что я был очень удивлен возможностью связать другой локальный хост с удаленным хостом, используя -fTN. Хотя, убийство этого соединения немного сложно. Я решил это немного грязно, используя sudo pkill ssh. По-видимому, есть опция ssh -S, но я не могу заставить ее работать. Он запрашивает какой-то сокет, я не знаю, откуда его получить. Что касается меня, то ответ на мой вопрос - это ssh -R, привязанный к удаленному хосту (2222) для меня (22). – Socrates 5 May 2018 в 01:32

Как сказал @terdon, вы можете использовать следующую команду для выполнения чего-либо на удаленном сервере через SSH и сохранения (перенаправления) вывода в локальный экземпляр:

UserA@HostA:~$ ssh UserB@HostB ls ~ > /home/UserA/ls-of-home-UserB.txt

Также вы можете использовать следующие команда выполнить что-то в локальном экземпляре и передать вывод на удаленный сервер и сохранить его командой tee:

UserA@HostA:~$ ls ~ | ssh UserB@HostB tee /home/UserB/ls-of-home-UserA.txt

Я @terdon @Sebastian Stark, вы, вероятно, спрашиваете, как создать туннель с пересылкой портов SSH. Соединение SSH позволяет привязать порт на удаленном сервере к порту на локальном, используя опцию -R. И наоборот, вы можете привязать локальный порт к удаленному порту с помощью -L.

В вашем случае должен быть применен первый сценарий с использованием опции -R:

UserA@HostA:~$ ssh UserB@HostB -R 2222:localhost:22

Эта команда установит соединение от HostA до HostB, как обычно, и свяжет порт 2222 на HostB с портом 22 на интерфейсе loopback на HostA. Это означает, что когда вы запрашиваете что-то на порту 2222 на HostB, запрос будет обрабатываться службой, которая прослушивает порт 22 на HostA, обычно это SSH-сервер. На этом этапе вы сможете использовать некоторые из следующих команд для подключения обратно с HostB до HostA:

UserB@HostB:~$ ssh UserA@HostB -p 2222 UserB@HostB:~$ ssh UserA@localhost -p 2222

Или вы можете использовать приведенные выше команды, например:

UserB@HostB:~$ ls ~ | ssh UserA@localhost -p 2222 tee /home/UserA/ls-of-home-UserB.txt

remote

Одно интересное использование заключается в том, что вы можете привязать удаленный порт на HostB к порту на другом экземпляре в локальная сеть HostA:

UserA@HostA:~$ ssh UserB@HostB -fTN -R 3389:192.168.100.115:3389

Где 192.168.100.115 - это IP-адрес на любом компьютере под управлением Windows в локальной сети HostA, назовем его HostC. Опции -fTN будут вызывать ssh-соединение в фоновом режиме, и у вас будет только туннель от HostB:3389 до HostA до HostC:3389.

Я используя эту комбинацию с autossh, чтобы поддерживать соединение в живом состоянии. Например, у меня есть следующая строка в моем crontab:

@reboot sleep 15 && autossh remote-server-with-public-ip -fTN

Где remote-server-with-public-ip - это что-то , определенное в моем ~/.ssh/config файле на HostA: [ ! d29] Host remote-server-with-public-ip HostName hostB IdentityFile ~/.ssh/hostB/id_rsa User userB Port 22 RemoteForward 2223 127.0.0.1:22 RemoteForward 8080 127.0.0.1:80 RemoteForward 6900 127.0.0.1:5900 RemoteForward 3389 192.168.100.115:3389

Порты 2223, 6900, 3389 в HostB не являются общедоступными, и я могу получить к ним доступ только через другое соединение SSH - например, из HostD, которое находится где-то на Интернет. Но для доступа к 8080 я использую Apache с обратным прокси-сервером на HostB :-), а файл конфигурации виртуального хоста выглядит следующим образом:

<VirtualHost _default_:443> ServerName forward.example.com # Other configuration directives SSLEngine on # SSL certificate files ProxyRequests Off <Proxy *> Order deny,allow Allow from all </Proxy> ProxyPass "/" "http://localhost:8080/" ProxyPassReverse "/" "http://localhost:8080/" <Location /> Order allow,deny Allow from all </Location> </VirtualHost> Модули Apache proxy и proxy_http необходимы.

Дальнейшее чтение:

Требуются модули Apache proxy и proxy_http. Создание сценария .sh для проверьте, существует ли соединение SSH, а если нет, то используйте «Исходящий SSH» для приема входящего SSH
2
ответ дан 17 July 2018 в 15:16

Как сказал @terdon, вы можете использовать следующую команду для выполнения чего-либо на удаленном сервере через SSH и сохранения (перенаправления) вывода в локальный экземпляр:

UserA@HostA:~$ ssh UserB@HostB ls ~ > /home/UserA/ls-of-home-UserB.txt

Также вы можете использовать следующие команда выполнить что-то в локальном экземпляре и передать вывод на удаленный сервер и сохранить его командой tee:

UserA@HostA:~$ ls ~ | ssh UserB@HostB tee /home/UserB/ls-of-home-UserA.txt

Я @terdon @Sebastian Stark, вы, вероятно, спрашиваете, как создать туннель с пересылкой портов SSH. Соединение SSH позволяет привязать порт на удаленном сервере к порту на локальном, используя опцию -R. И наоборот, вы можете привязать локальный порт к удаленному порту с помощью -L.

В вашем случае должен быть применен первый сценарий с использованием опции -R:

UserA@HostA:~$ ssh UserB@HostB -R 2222:localhost:22

Эта команда установит соединение от HostA до HostB, как обычно, и свяжет порт 2222 на HostB с портом 22 на интерфейсе loopback на HostA. Это означает, что когда вы запрашиваете что-то на порту 2222 на HostB, запрос будет обрабатываться службой, которая прослушивает порт 22 на HostA, обычно это SSH-сервер. На этом этапе вы сможете использовать некоторые из следующих команд для подключения обратно с HostB до HostA:

UserB@HostB:~$ ssh UserA@HostB -p 2222 UserB@HostB:~$ ssh UserA@localhost -p 2222

Или вы можете использовать приведенные выше команды, например:

UserB@HostB:~$ ls ~ | ssh UserA@localhost -p 2222 tee /home/UserA/ls-of-home-UserB.txt

remote

Одно интересное использование заключается в том, что вы можете привязать удаленный порт на HostB к порту на другом экземпляре в локальная сеть HostA:

UserA@HostA:~$ ssh UserB@HostB -fTN -R 3389:192.168.100.115:3389

Где 192.168.100.115 - это IP-адрес на любом компьютере под управлением Windows в локальной сети HostA, назовем его HostC. Опции -fTN будут вызывать ssh-соединение в фоновом режиме, и у вас будет только туннель от HostB:3389 до HostA до HostC:3389.

Я используя эту комбинацию с autossh, чтобы поддерживать соединение в живом состоянии. Например, у меня есть следующая строка в моем crontab:

@reboot sleep 15 && autossh remote-server-with-public-ip -fTN

Где remote-server-with-public-ip - это что-то , определенное в моем ~/.ssh/config файле на HostA: [ ! d29] Host remote-server-with-public-ip HostName hostB IdentityFile ~/.ssh/hostB/id_rsa User userB Port 22 RemoteForward 2223 127.0.0.1:22 RemoteForward 8080 127.0.0.1:80 RemoteForward 6900 127.0.0.1:5900 RemoteForward 3389 192.168.100.115:3389

Порты 2223, 6900, 3389 в HostB не являются общедоступными, и я могу получить к ним доступ только через другое соединение SSH - например, из HostD, которое находится где-то на Интернет. Но для доступа к 8080 я использую Apache с обратным прокси-сервером на HostB :-), а файл конфигурации виртуального хоста выглядит следующим образом:

<VirtualHost _default_:443> ServerName forward.example.com # Other configuration directives SSLEngine on # SSL certificate files ProxyRequests Off <Proxy *> Order deny,allow Allow from all </Proxy> ProxyPass "/" "http://localhost:8080/" ProxyPassReverse "/" "http://localhost:8080/" <Location /> Order allow,deny Allow from all </Location> </VirtualHost> Модули Apache proxy и proxy_http необходимы.

Дальнейшее чтение:

Требуются модули Apache proxy и proxy_http. Создание сценария .sh для проверьте, существует ли соединение SSH, а если нет, то используйте «Исходящий SSH» для приема входящего SSH
2
ответ дан 20 July 2018 в 15:42

Как сказал @terdon, вы можете использовать следующую команду для выполнения чего-либо на удаленном сервере через SSH и сохранения (перенаправления) вывода в локальный экземпляр:

UserA@HostA:~$ ssh UserB@HostB ls ~ > /home/UserA/ls-of-home-UserB.txt

Также вы можете использовать следующие команда выполнить что-то в локальном экземпляре и передать вывод на удаленный сервер и сохранить его командой tee:

UserA@HostA:~$ ls ~ | ssh UserB@HostB tee /home/UserB/ls-of-home-UserA.txt

Я @terdon @Sebastian Stark, вы, вероятно, спрашиваете, как создать туннель с пересылкой портов SSH. Соединение SSH позволяет привязать порт на удаленном сервере к порту на локальном, используя опцию -R. И наоборот, вы можете привязать локальный порт к удаленному порту с помощью -L.

В вашем случае должен быть применен первый сценарий с использованием опции -R:

UserA@HostA:~$ ssh UserB@HostB -R 2222:localhost:22

Эта команда установит соединение от HostA до HostB, как обычно, и свяжет порт 2222 на HostB с портом 22 на интерфейсе loopback на HostA. Это означает, что когда вы запрашиваете что-то на порту 2222 на HostB, запрос будет обрабатываться службой, которая прослушивает порт 22 на HostA, обычно это SSH-сервер. На этом этапе вы сможете использовать некоторые из следующих команд для подключения обратно с HostB до HostA:

UserB@HostB:~$ ssh UserA@HostB -p 2222 UserB@HostB:~$ ssh UserA@localhost -p 2222

Или вы можете использовать приведенные выше команды, например:

UserB@HostB:~$ ls ~ | ssh UserA@localhost -p 2222 tee /home/UserA/ls-of-home-UserB.txt

remote

Одно интересное использование заключается в том, что вы можете привязать удаленный порт на HostB к порту на другом экземпляре в локальная сеть HostA:

UserA@HostA:~$ ssh UserB@HostB -fTN -R 3389:192.168.100.115:3389

Где 192.168.100.115 - это IP-адрес на любом компьютере под управлением Windows в локальной сети HostA, назовем его HostC. Опции -fTN будут вызывать ssh-соединение в фоновом режиме, и у вас будет только туннель от HostB:3389 до HostA до HostC:3389.

Я используя эту комбинацию с autossh, чтобы поддерживать соединение в живом состоянии. Например, у меня есть следующая строка в моем crontab:

@reboot sleep 15 && autossh remote-server-with-public-ip -fTN

Где remote-server-with-public-ip - это что-то , определенное в моем ~/.ssh/config файле на HostA: [ ! d29] Host remote-server-with-public-ip HostName hostB IdentityFile ~/.ssh/hostB/id_rsa User userB Port 22 RemoteForward 2223 127.0.0.1:22 RemoteForward 8080 127.0.0.1:80 RemoteForward 6900 127.0.0.1:5900 RemoteForward 3389 192.168.100.115:3389

Порты 2223, 6900, 3389 в HostB не являются общедоступными, и я могу получить к ним доступ только через другое соединение SSH - например, из HostD, которое находится где-то на Интернет. Но для доступа к 8080 я использую Apache с обратным прокси-сервером на HostB :-), а файл конфигурации виртуального хоста выглядит следующим образом:

<VirtualHost _default_:443> ServerName forward.example.com # Other configuration directives SSLEngine on # SSL certificate files ProxyRequests Off <Proxy *> Order deny,allow Allow from all </Proxy> ProxyPass "/" "http://localhost:8080/" ProxyPassReverse "/" "http://localhost:8080/" <Location /> Order allow,deny Allow from all </Location> </VirtualHost> Модули Apache proxy и proxy_http необходимы.

Дальнейшее чтение:

Требуются модули Apache proxy и proxy_http. Создание сценария .sh для проверьте, существует ли соединение SSH, а если нет, то используйте «Исходящий SSH» для приема входящего SSH
2
ответ дан 23 July 2018 в 16:13

Другие вопросы по тегам:

Похожие вопросы: