Когда я подключаюсь к удаленному хосту по ssh, могу ли я получить удаленный идентификатор bash на моем локальном компьютере? или наоборот?
например, на локальном терминале я просто использую ssh и сохраняю соединение для выполнения своих задач:
ssh user@remote.com
и ps на локальном компьютере выглядит так:
ps faux
...
shunh 32683 0.1 0.0 121148 5116 pts/2 Ss 07:02 0:00 \_ -bash
shunh 33079 0.6 0.0 189360 8484 pts/2 S+ 07:03 0:00 \_ ssh -X remote_host
и на remote_host:
ps faux
...
root 214679 0.0 0.0 158820 5724 ? Ss 07:03 0:00 \_ sshd: shunh [priv]
shunh 214681 0.0 0.0 158820 2556 ? S 07:03 0:00 \_ sshd: shunh@pts/1
shunh 214682 0.0 0.0 121124 3608 pts/1 Ss 07:03 0:00 \_ -bash
Итак, могу ли я получить номер pid "214682" на моем локальном компьютере?
Так как @Nikita Kipriyanov прокомментировал, простой способ
ssh user@remote.domain 'echo $$'
(с использованием одинарных кавычек!), но кажется не очень полезным, потому что localhost смогут прочитать номер процесса только после его завершения.
Есть способ убежать ssh
для перенаправления портов, например: это подключит indirRem.remDom:22
через прокси-сервер ssh: user@rem.dom
.
ssh -f -L2022:indirRem.remDom:22 user@rem.dom 'echo $$ $PPID;sleep 2' >/tmp/rpids.txt &&
ssh -o HostKeyAlias=indirectRemote.remotedomain -p 2022 indUser@localhost
Оттуда, если вы находитесь на localhost, вы нажимаете что-то вроде:
ssh user@rem.dom ps ef $(</tmp/rpids.txt)
Вы можете увидеть, какой pid используется для текущего (открытого) сеанса (пока вы не закрываете / не завершаете сеанс оболочки на indirRem.remDom:22
).
ssh -f -L 3306:localhost:3306 user@rem.dom 'echo $$ $PPID;sleep 2' >/tmp/rpids.txt &&
mariadb -h 127.0.0.1 -p"What a strong password" database
Это будет запускаться локально mariadb
клиент на местном 3306
tcp порт, но этот порт перенаправляется из rem.dom
(который обычно прослушивает только устройство с обратной связью)
То же, но пересылка Сокет UNIX вместо службы TCP:
ssh -f -L 3306:/var/run/mysqld/mysqld.sock user@rem.dom 'echo $$ $PPID;sleep 2' >/tmp/rpids.txt &&
mariadb -h 127.0.0.1 -p"What a strong password" database
затем
ssh user@rem.dom ps ef $(</tmp/rpids.txt)
покажет sshd
процесс, который удерживает перенаправленные порты.
Во всяком случае, я не понимаю, что с этим делать /tmp/rpids.txt
.
Читать man ssh
и man sshd
, искать -M
(мастер) и -S
(ведомые) переключатели.