Перенос диска UFS с FreeNAS на DragonFly BSD

Во-первых, вот лучшее решение, чем то, которое приведено в ссылке, указанной в вопросе, поскольку это новое решение не зависит от внешних инструментов, таких как netcat:

Host C
  ProxyCommand ssh -W %h:%p B

в .ssh/config хоста A. Пользователям не нужно обладать особыми компьютерными навыками, им просто нужно быть информированными. Любой может поместить в файл 2 строки.

Если это действительно проблема, можно добавить специальную команду в файл .ssh/authorized_keys на хосте B:

command="ssh C" ssh-rsa <key_of_the_user_of_host_A>

Таким образом, когда пользователь выполняет ssh B, вместо запуска интерактивной оболочки на хосте B, SSH-сервер на хосте B автоматически запустит ssh C (см. man-страницу sshd(8)). Однако это предотвратит любое прямое протоколирование на хосте B, и любая другая команда SSH, например /bin/bash -l в ssh -t B /bin/bash -l, будет проигнорирована. Как сказано на странице руководства:

Команда, первоначально предоставленная клиентом, доступна в переменной окружения SSH_ORIGINAL_COMMAND.

Таким образом, возможно, есть некоторые возможности для улучшения, либо для выполнения предоставленной команды на хосте C, либо для выполнения ее на хосте B при некоторых условиях (также будьте осторожны с цитированием, если вы учитываете эту переменную окружения). Одним из примеров является:

command="ssh ${TTY:+-t} C ${SSH_ORIGINAL_COMMAND-$SHELL}" ssh-rsa <key>

который запускает предоставленную команду на хосте C, если он есть (и запускает интерактивную оболочку, как обычно, если ее нет). С этим scp может работать, но на моей машине он не работает с ошибкой "Permission denied". Но rsync работает хорошо и может быть использован как замена scp, если у вас есть проблемы с ним.

Важно. Не выбирайте решение, которое заключается в открытии (обязательно непривилегированного) порта на хосте B. Либо это не будет работать, потому что соединения с такими портами блокируются брандмауэром университета, либо это создаст проблемы с безопасностью, так как это позволит пользователям обходить аутентификацию (с такими вещами, как трассировка) на хосте B через SSH-сервер на порту 22.

3
03.07.2016, 15:46
0 ответов

Теги

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