/proc/net
является символической ссылкой на /proc/self/net
, поэтому /proc/net
и /proc/[pid]/net
отличаются только тогда, когда процесс [pid]
и процесс, который исследует /proc/net
, находятся в разных сетевых пространствах имен .
Если вы хотите получить список всех сокетов, вам придется просмотреть все пространства имен; для двух процессов, находящихся в одном и том же сетевом пространстве имен, их /proc/PID/ns/net
будет иметь одинаковый номер инода. Таким образом, вы можете перечислить все различные сетевые пространства имен в вашей системе.
Две конфигурации, которые я считаю работающими::
dk@local $ cat ~/.ssh/config
Host behindProxy
HostName gateway
LocalCommand pbrun -u sysuser -h remote bash
PermitLocalCommand yes
dk@local $ ssh behindProxy
dk@gateway's password:
sysuser@remote's password:
sysuser@remote $
Однако на самом деле соединение происходит не от шлюза:
sysuser@remote $ last -1 -w
dk pts/18 local.domain.com Sun Nov 8 22:03 still logged in
В качестве альтернативы:
dk@local $ cat ~/.ssh/config
Host behindProxy2
HostName gateway
RemoteCommand pbrun -u sysuser -h remote bash
dk@local $ ssh -t behindProxy2
dk@gateway's password:
sysuser@remote's password:
sysuser@remote $
Доказательство того, что соединение действительно происходит через шлюз:
sysuser@remote $ last -1 -w
dk pts/18 gateway.domain.com Sun Nov 8 22:06 still logged in
Обратите внимание, что здесь необходима опция -t
, иначе возникает ошибка:
dk@local $ ssh behindProxy2
dk@gateway's password:
sysuser@remote's password: pbrun8.5.1-01[20295]: 3346: TTY is no longer available
Можно не указывать -t
, указавRequestTTY force
:
dk@local $ cat ~/.ssh/config
Host behindProxy2
HostName gateway
RequestTTY force
RemoteCommand pbrun -u sysuser -h remote bash
dk@local $ ssh behindProxy2
dk@gateway's password:
sysuser@remote's password:
sysuser@remote $
Простым способом может быть использование ssh JumpHosts, вы можете использовать ключи ssh, чтобы не вводить пароль дважды:
ssh -J <username>@<gateway_host>:<port> <username>@<remote_host>:<port>
С момента последнего редактирования:
Во-первых, вы не можете одновременно использовать и ProxyJump, и ProxyCommand, поскольку ProxyJump является сокращением для ProxyCommand с ssh и некоторыми параметрами.
Лучше использовать ssh напрямую с директивой ProxyCommand:
Host behindProxy
HostName gateway
ProxyCommand ssh -W %h:%p sysuser@remote 'bash'
Другим способом может быть использование RemoteCommand с использованием pbrun , как предложено в разделе комментариев.