Разработает ли SSH ProxyJump, требует локального доступа к оболочкам?

Лучше не связываться с установкой python ...

Что вы можете сделать, так это вызвать pip3 для определенной версии python, в вашем случае:

python3.5 $(which pip3) install <some_package_...>
4
21.07.2018, 22:49
2 ответа

На справочной странице ssh_configдля ProxyCommandнаписано

The command string extends to the end of the line, and is executed using the user's shell ‘exec’ directive to avoid a lingering shell process.

Я запустил это с straceи увидел следующее:

write(2, "debug1: Executing proxy command:"..., 114debug1: Executing proxy command: exec ssh -l rundeck -v -W '[target]:22' proxy
[pid 30151] execve("/usr/sbin/nologin", ["/usr/sbin/nologin", "-c", "exec ssh -l rundeck -v -W '[172."...], 0x55f477e50ab0 /* 15 vars */ <unfinished...>

По сути, я думаю, что SSH пытается быть умным и ищет оболочку пользователя, а затем запускает команду прокси, используя оболочку. Но когда оболочка не существует, она терпит неудачу.

Если вы установите переменную среды SHELLдо запуска ssh, это решит проблему.

1
27.01.2020, 20:54

При тестировании OpenSSH 7.4, в частности:

$ ssh -V
OpenSSH_7.4p1, OpenSSL 1.0.2k-fips  26 Jan 2017

Я смог установить для своей пользовательской оболочки значение /sbin/nologinили /bin/falseи смог войти на сервер B через сервер A.

Примеры

$ cat /etc/passwd
user1:x:1001:1001::/home/user1:/sbin/nologin

или

$ cat /etc/passwd
user1:x:1001:1001::/home/user1:/bin/false
хост A → B

Попытка войти на сервер B (mulder )через сервер A (centos7 )сработала.

[vagrant@centos7 ~]$ ssh -J user1@localhost root@mulder
user1@localhost's password:
Last login: Sat Jul 21 15:59:00 2018 from macbook1
[root@mulder ~]#
хост A → B → C

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

[vagrant@centos7 ~]$ ssh -J user1@localhost,user1@mulder root@skinner
user1@localhost's password:
user1@mulder's password:
Last login: Sat Jul 21 16:09:48 2018 from 192.168.1.10
[root@skinner ~]# 

ПРИМЕЧАНИЕ.:В приведенном выше сценарии пользователь1 имеет /sbin/nologin, определенный в /etc/passwdна серверах centos7 и mulder.

Отладка вашей проблемы

Итак, я бы начал с -vvvпереключения на отладку ssh.

$ ssh -vvv -J user1@localhost,user1@mulder root@skinner
OpenSSH_7.4p1, OpenSSL 1.0.2k-fips  26 Jan 2017
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 58: Applying options for *
debug1: Setting implicit ProxyCommand from ProxyJump: ssh -l user1 -J user1@localhost -vvv -W %h:%p mulder
debug1: Executing proxy command: exec ssh -l user1 -J user1@localhost -vvv -W skinner:22 mulder
...
...
debug1: Setting implicit ProxyCommand from ProxyJump: ssh -l user1 -vvv -W %h:%p localhost
debug1: Executing proxy command: exec ssh -l user1 -vvv -W mulder:22 localhost
...
...
debug2: PTY allocation request accepted on channel 0
debug2: channel 0: rcvd adjust 2097152
debug3: receive packet: type 99
debug2: channel_input_status_confirm: type 99 id 0
debug2: shell request accepted on channel 0
Last login: Sat Jul 21 16:10:28 2018 from 192.168.1.10
[root@skinner ~]#

ПРИМЕЧАНИЕ.:Из приведенного выше вы можете увидеть, что -Jна самом деле делает за кулисами, поскольку он расширяется до различных команд sshпо мере прохождения через прокси-серверы перехода.

Для дальнейшего рассмотрения вашей проблемы я предлагаю запустить эти команды напрямую и посмотреть, как они работают.

root@localhost → root@localhost

В своих экспериментах я смог sshтаким же образом, как вы пытались:

$ ssh -J root@localhost root@localhost
root@localhost's password:
root@localhost's password:
Last login: Sat Jul 21 16:40:54 2018 from localhost
CentOS 7 Build 1805.02
$

Для этого необходимо установить /etc/ssh/sshd_configтак, чтобы root мог войти в систему.

Ссылки

4
27.01.2020, 20:54

Теги

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