Это кажется основной вещью, но я не могу найти решение, которое полностью удовлетворяет.

Клиент ssh ---> Сервер A ssh ----> Сервер B

Это, конечно, легко сделать, набрав команды при входе в систему сначала A, а затем B. Но у меня есть особые требования к серверу A:

  • Автоматически SSH к серверу B (вход без пароля уже включен)
  • Автоматический выход также с Сервера A, когда сессия на Сервере B заканчивается
  • Сделайте запись (текстовый файл) сессии. Не нужно покрывать этот ответ, так как для этого есть много инструкций.
  • Проще говоря, пользователь не должен иметь права что-либо делать на Сервере A, вместо этого он должен напрямую перейти на Сервер B. Но прозрачное туннелирование или Jumphost не вариант, потому что необходимо регистрировать сеанс.

1 ответ1

1

Просто сделал это, чтобы создать Jumphost без необходимости входа в систему дважды.

В sshd_config добавьте следующее для serverA:

allowgroups users  
Match group users  
   ForceCommand ssh_forcecommand.sh  

ssh_forcecommand.sh

if [ -z "$SSH_ORIGINAL_COMMAND" ]; then  
  echo "usage ..."  
else  
  ssh $SSH_ORIGINAL_COMMAND  
fi  

В моем случае я использую параметр после хоста (ваш сервер A) в качестве хоста назначения (ваш сервер B). Ssh-клиент linux не будет запрашивать терминал, если вы ставите что-либо после хоста, т.е. команду. Вам придется использовать опцию -t на клиенте, чтобы принудительно распределить терминал.

ssh -t серверA серверB ---> серверA ---> серверB

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