ProxyCommand - это чистое решение для случая, когда вы разрешаете доступ к оболочке в обеих системах. Мы хотели предоставить удаленным пользователям доступ к внутренней машине (A) через брокера (B), но без предоставления пользователю доступа оболочки к B для повышения безопасности. Это сработало:
Замените оболочку входа (используйте chsh) для extuser в брокере со следующим скриптом (хранящимся в файле): [ ! d2]
#!/bin/sh # this is essential to avoid Exec format error
ssh internaluser@A
Если в extuser @ B для удаленного пользователя не было введен пароль, а во внутреннем сервере @ A для extuser @ B, то выполнение следующей команды напрямую приведет к удалению пользователя A
ssh extuser@B
Совет. Создайте необязательный пароль для входа в систему authorized_keys в extuser @ B перед тем, как перейти к пользовательской оболочке входа. После изменения, поскольку эта учетная запись недоступна для кого-либо через оболочку, только sudoer @ B может вносить изменения в файл authorized_keys, редактируя его напрямую.
sudo vi ~extuser/.ssh/authorized_keys
sudo touch ~extuser/.hushlogin
Последняя строка - это подавление логина баннер с B, поэтому удаленный пользователь имеет прозрачный доступ к A.