tipsy
20.08.2010, 02:39
Предположим, вы получили доступ к ssh аккаунту mike@firewall.com
Mike - системный администратор в крупной сети.
Так как прямого доступа к офисным серверам из дома у него нет, он логинится на mike@firewall.com, и оттуда выполняет команду:
ssh root@coolserver.intranet
У вас есть возможность нахаляву проехаться на его соединении прямо в уютный рутовый шелл на coolserver.intranet.
Для этого добавляем Майку в ~/.ssh/config следующее:
Host *
ControlMaster auto
ControlPath ~/.ssh/master-%r@%h:%p
Прибиваем его ssh соединение и ждём, пока Майк перелогинится на coolserver.intranet.
в каталоге .ssh появится файл(сокет) формата master-root@coolserver.intranet:22
Выполняем команду
$ ssh root@coolserver.intranet -o ControlPath=.ssh/master-root@coolserver.intranet:22
и вуаля - мы рут, без запроса пароля и какой-либо авторизации.
Ваша сессия инжектится внутрь уже существующего соединения.
Не мешкайте, потому что в момент, когда Майк завершит свою сессию - вас тоже выкинет.
Всё это происходит совершенно незаметно для самого пользователя.
У описанной выше задачи есть множество решений. Раньше я добавлял в .bash_profile "alias ssh=/tmp/my_cool_ssh", но это не всегда работает, и вариант с ControlMaster проще.
Кстати, обладая правами рута, можно захватывать исходящие соединения любых локальных пользователей к внешним ssh серверам, если вы прописали им эту опцию в ~/.ssh/config (либо вставили её в системный конфиг)
Это может быть полезно, если пропатчить ssh по каким-либо причинам нельзя.
Фрагмент мануала:
ControlMaster
Enables the sharing of multiple sessions over a single network
connection. When set to ``yes'', ssh(1) will listen for
connections on a control socket specified using the ControlPath
argument. Additional sessions can connect to this socket using
the same ControlPath with ControlMaster set to ``no'' (the
default). These sessions will try to reuse the master instance's
network connection rather than initiating new ones, but will fall
back to connecting normally if the control socket does not exist,
or is not listening.
Mike - системный администратор в крупной сети.
Так как прямого доступа к офисным серверам из дома у него нет, он логинится на mike@firewall.com, и оттуда выполняет команду:
ssh root@coolserver.intranet
У вас есть возможность нахаляву проехаться на его соединении прямо в уютный рутовый шелл на coolserver.intranet.
Для этого добавляем Майку в ~/.ssh/config следующее:
Host *
ControlMaster auto
ControlPath ~/.ssh/master-%r@%h:%p
Прибиваем его ssh соединение и ждём, пока Майк перелогинится на coolserver.intranet.
в каталоге .ssh появится файл(сокет) формата master-root@coolserver.intranet:22
Выполняем команду
$ ssh root@coolserver.intranet -o ControlPath=.ssh/master-root@coolserver.intranet:22
и вуаля - мы рут, без запроса пароля и какой-либо авторизации.
Ваша сессия инжектится внутрь уже существующего соединения.
Не мешкайте, потому что в момент, когда Майк завершит свою сессию - вас тоже выкинет.
Всё это происходит совершенно незаметно для самого пользователя.
У описанной выше задачи есть множество решений. Раньше я добавлял в .bash_profile "alias ssh=/tmp/my_cool_ssh", но это не всегда работает, и вариант с ControlMaster проще.
Кстати, обладая правами рута, можно захватывать исходящие соединения любых локальных пользователей к внешним ssh серверам, если вы прописали им эту опцию в ~/.ssh/config (либо вставили её в системный конфиг)
Это может быть полезно, если пропатчить ssh по каким-либо причинам нельзя.
Фрагмент мануала:
ControlMaster
Enables the sharing of multiple sessions over a single network
connection. When set to ``yes'', ssh(1) will listen for
connections on a control socket specified using the ControlPath
argument. Additional sessions can connect to this socket using
the same ControlPath with ControlMaster set to ``no'' (the
default). These sessions will try to reuse the master instance's
network connection rather than initiating new ones, but will fall
back to connecting normally if the control socket does not exist,
or is not listening.