SSH возвращается на локальный компьютер из удаленного сеанса SSH


12

Я пытаюсь сделать что-то довольно необычное (для меня в любом случае) с SSH, и я не могу заставить его работать, надеюсь, вы поможете.

Я хочу установить соединение с удаленным сервером с моего Mac, используя SSH. Все идет нормально. Теперь хитрый момент, когда соединение с удаленным сервером установлено, я хочу инициировать соединение с удаленного сервера BACK на локальный компьютер. Я знаю, сумасшедший. По сути, мне нужно перепрыгнуть через эти обручи, чтобы иметь возможность просматривать удаленный сервер, а затем отправлять информацию о файле обратно на мой локальный компьютер, чтобы он мог обрабатываться приложением на локальном компьютере. Надеюсь, это имеет смысл!

В тот момент, когда я возвращаюсь по SSH на локальную машину, как только я вошел в систему на удаленном сервере, терминал просто будет сидеть на месте, без ошибок, даже с -v.

Я пытаюсь выяснить, куда мне следует звонить, просмотрев выходные данные переменной $ SSH_CLIENT, но у меня стандартное ванильное интернет-соединение (без статического IP-адреса). Я думаю, что это может быть причиной проблемы.

Вещи, которые я установил: я на Mac (OS X 10.6.4), и у меня включен удаленный вход в настройках системы / общий доступ. Если я пытаюсь подключить SSH к моему компьютеру Mac с другого компьютера через локальную сеть, я не могу подключиться без проблем. Если я попытаюсь подключиться по SSH к другому серверу (не к моей локальной машине) с моего удаленного сервера, я смогу подключиться без проблем.

Таким образом, приведенные выше факты заставляют меня думать, что я в отношении брандмауэров и т.д. на локальных и удаленных машинах.

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

Любая помощь, ссылки или общее подталкивание в правильном направлении будет принята с благодарностью!


Вы можете просматривать удаленный сервер с помощью SSH. Или вы пытаетесь использовать AFS? Как насчет portforwardings и / или sftp / scp?
Андреас Рем

Всем привет. Да, я могу без проблем подключиться и просмотреть структуру каталогов удаленного сервера. Я не уверен, что вы имеете в виду, извините. В основном план таков: я хочу подключиться к моему удаленному серверу Linux с моего локального Mac, найти файл и затем передать его обратно по установленному соединению (или сгенерировать новое соединение на основе уже установленного), чтобы локальный компьютер, на котором приложение Mac будет читать / редактировать данные перед отправкой обратно на сервер. Я не особенно обеспокоен тем, как я достигаю этого с точки зрения вовлечения других протоколов.
I0n

Ответы:


9

Если при подключении к вашему локальному устройству вы сможете войти перед тем, как зависнуть, это не ответ. Если вы не зайдете так далеко, вы, вероятно, не вернетесь к своему Mac (либо никуда не денетесь или не включите SSH на шлюзе). Попробуйте обратный туннель (для этого потребуется GatewayPorts, установленный на On в sshd_config на вашем сервере, но я считаю, что это по умолчанию):
you@yourMac$ ssh -R 2000:localhost:22 user@remoteserver
это должно позволить вам подключиться к серверу как обычно, но также открыть туннель, чтобы вы могли подключиться снова порт 2000 (любой порт свыше 1024 должен работать), поэтомуyou@yourserver$ ssh -p2000 user@localhost

РЕДАКТИРОВАТЬ: изменил имя хоста на localhost


2
Вы должны использовать user @ localhost в последней команде
b0fh

1
Это было полезно, оно почти привело меня туда, где я хочу быть! Я могу установить соединение с обратным туннелем, как описано выше, а затем снова подключиться через ssh к моему локальному Mac, используя ssh -p 2000 i0n @ localhost. Так как я могу достичь этого, не зная заранее, что мне нужна эта функциональность? Другими словами, с существующим и стандартным ssh-соединением. Это возможно?
I0n

Спасибо b0fh, я уже ложился спать, когда я написал это =) i0n - инстинктивно я хочу сказать, что вы не можете изменить существующее соединение, чтобы сделать это, но PuTTY может сделать это, поэтому должен быть способ. Вы всегда можете послать новое SSH-соединение с туннелем, когда вам нужно вернуться обратно, но я предполагаю, что это будет сделано программно, так что это может не подойти. Посмотрите на Expect - если любой язык может быть готов поверх SSH, это будет именно так.
Джеймс Л

2

Доступна ли ваша локальная машина с сервера? Вы можете пинговать это? Я спрашиваю, потому что то, что вы делаете, должно работать, если ваша машина доступна. Ваш сервер находится в Интернете или в локальной сети, в той же подсети?

В любом случае, если вам нужно только отредактировать файл, почему бы вам просто не использовать scp для копирования файла на локальный компьютер? Вы можете использовать ssh для поиска файла на удаленном сервере и, когда у вас есть его путь, введите на локальном компьютере (в другом терминале):

scp user@server:/path/to/file/on/server /local/path/to/save/file

Чтобы положить файл обратно, scp снова переключает пути.

Obs: вам не нужно исходное соединение ssh для использования scp - оно создаст новое

Это выше, если вам нужно получить доступ к нему в терминале. В Linux (и, конечно, на Mac, но я не знаю, как это сделать), вы можете смонтировать удаленное местоположение ssh в Сети и использовать соединение, как вы используете локальный диск (это sftp, и соединение имеет вид: sftp://user@server:/path/to/mountи я думаю, это то, что вам нужно, а не подключение к удаленному терминалу, чтобы вы могли редактировать файл напрямую с помощью приложения Mac.


1

Вы также можете посмотреть sshfs(вам нужен MacFuse для этого). Это позволяет вам монтировать каталоги на удаленном компьютере и получать к ним доступ, как к обычным папкам на вашем компьютере. Кроме того, вы все равно можете sshвойти в компьютер и создать / найти нужные файлы. Передача их тогда будет такой же простой, как передача локальных файлов.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.