Я пытаюсь сделать что-то довольно необычное (во всяком случае для меня) с SSH, и я не могу заставить его работать, надеюсь, вы можете помочь.
Я хочу установить соединение с удаленным сервером со своего Mac по SSH. Все идет нормально. Теперь сложный момент: установив соединение с удаленным сервером, я хочу затем инициировать соединение с удаленного сервера НАЗАД к локальному компьютеру. Я знаю, сумасшедший. В основном мне нужно перепрыгивать через эти обручи, чтобы иметь возможность просматривать удаленный сервер, а затем отправлять информацию о файле обратно на мою локальную машину, чтобы ее можно было обработать приложением на локальной машине. Надеюсь, это имеет смысл!
На данный момент, если я вернусь по SSH на локальный компьютер после входа на удаленный сервер, терминал просто будет сидеть и крутиться, никаких ошибок даже с -v.
Я пытаюсь определить, куда мне следует звонить, глядя на вывод переменной $ SSH_CLIENT, но я использую стандартное обычное интернет-соединение (без статического IP-адреса). Думаю, это может быть причиной проблемы.
Вещи, которые я установил: я нахожусь на Mac (OS X 10.6.4), и у меня включен удаленный вход в системных настройках / совместном использовании. Если я попытаюсь подключиться по SSH к своему Mac с другого компьютера в локальной сети, я не смогу подключиться. Если я попытаюсь подключиться по SSH к другому серверу (не на моей локальной машине) с моего удаленного сервера, я могу без проблем подключиться.
Таким образом, приведенные выше факты заставляют меня думать, что я ничего не знаю о брандмауэрах и т. Д. На локальных и удаленных машинах.
Я уверен, что мне здесь не хватает чего-то очевидного, но хоть убей, я не могу с этим справиться.
Любая помощь, ссылки или общие подсказки в правильном направлении будут очень благодарны!
Если при обратном подключении к своему локальному компьютеру вы можете войти в систему до зависания, то это не ответ. Если вы не зайдете так далеко, вы, вероятно, не вернетесь к своему Mac (либо никуда не попадете, либо нажмете SSH на шлюзе). Попробуйте использовать обратный туннель (для этого потребуется, чтобы GatewayPorts был включен в sshd_config на вашем сервере, но я считаю, что это значение по умолчанию):
you@yourMac$ ssh -R 2000:localhost:22 user@remoteserver
Это должно позволить вам подключиться к серверу как обычно, но также открыть туннель, чтобы вы могли подключиться обратно через порт 2000 (любой порт более 1024 должен работать), поэтому you@yourserver$ ssh -p2000 user@localhost
РЕДАКТИРОВАТЬ: изменено имя хоста на localhost
Доступен ли ваш локальный компьютер с сервера? Вы можете пинговать это? Я спрашиваю об этом, потому что то, что вы делаете, должно работать, если ваша машина доступна. Ваш сервер находится в Интернете или в локальной сети, в той же подсети?
В любом случае, если вам нужно только отредактировать файл, почему бы вам просто не использовать scp для копирования файла на локальный компьютер? Вы можете использовать ssh для поиска файла на удаленном сервере, и когда у вас есть его путь, введите его на своем локальном компьютере (в другом терминале):
scp user@server:/path/to/file/on/server /local/path/to/save/file
Чтобы вернуть файл обратно, scp снова переключает пути.
Замечания: вам не нужно исходное ssh-соединение для использования scp - оно создаст новое
Это выше, если вам нужно получить к нему доступ в терминале. В Linux (и, конечно же, на Mac, но я не знаю, как это сделать) вы можете смонтировать удаленное местоположение ssh в Networks и использовать соединение, поскольку вы используете локальный диск (это sftp, и соединение имеет вид: sftp://user@server:/path/to/mount
и я думаю, это то, что вам нужно вместо подключения к удаленному терминалу, чтобы вы могли редактировать файл непосредственно с помощью приложения Mac.
Вы также можете посмотреть sshfs
(тебе нужно MacFuse для этого). Это позволяет монтировать каталоги на удаленном компьютере и получать к ним доступ, как к обычным папкам на вашем компьютере. Кроме того, вы все еще могли ssh
в машину и создайте / найдите нужные файлы. Перенос тогда их будет так же просто, как передать локальные файлы.