Я хочу получить доступ к некоторому хосту с моего персонального компьютера, но сначала я должен получить доступ к промежуточному серверу, потому что конечный пункт назначения не виден из общедоступного Интернета.

Дело в том, что я должен сделать следующее, чтобы получить доступ к финальному хосту. С моего компьютера:

ssh username@server

И введите пароль. Как только я там

ssh username2@finalhost

И введите другой пароль.

Это довольно громоздко, особенно при выполнении scp , потому что мне нужно скопировать файл на промежуточный сервер, прежде чем я смогу скопировать его на конечный хост.

Есть ли способ сделать этот процесс автоматическим как для команд ssh и для scp ?

2 ответа2

4

Если у вас OpenSSH 7.3 или более поздняя версия , вы можете использовать ProxyJump в конфигурации клиента SSH для указания хостов перехода.

Например, отредактируйте ваш ~/.ssh/config и добавьте

Host finalhost
HostName finalhost.example.com
User username2
ProxyJump username@server

Теперь ssh finalhost или scp file.txt finalhost:. должен пройти через хост хоста.

0

Вот короткий блок ~/.ssh/config, который выполнит трик (даже для старых версий ssh):

Host server
    User username

Host finalhost
    User username2
    ProxyCommand ssh server -W %h:%p

Вы объявляете 2 хоста, средний сервер и конечный хост. Соединение ssh с сервером напрямую с пользователем и хостом, указанным в конфигурации. Соединение с конечным хостом выполняет переход на сервер, как указано в строке ProxyCommand .

Два магических параметра % h и % p используются для пересылки текущего Host = finalhost и текущего порта = 22 (по умолчанию)

Во-вторых, чтобы запретить ввод пароля при каждом подключении к этим машинам, вы можете использовать команду ssh-copy-id :

ssh-copy-id server
<type server password for the last time>

ssh-copy-id finalhost
<type finalhost password for the last time>

Чтобы это работало, вам необходимо сгенерировать пару открытый-закрытый ключ, предварительно используя ssh-keygen. Вы можете проверить, есть они или нет, они уже существуют в папке ~/.ssh (id_rsa.pub & id_rsa)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .