Этот подход вдохновлен ответом @Mark Stickley.
Он работает, даже если у вас есть два разных номера порта (не только имена хостов) для доступа к одному и тому же компьютеру из двух разных мест.
Вы можете сохранить несколько версий ~/.ssh/config
в зависимости от количества ситуаций.
Например, в моем случае дома я получаю доступ к своему серверу с именем хоста как my-fancy-server
и портом как 22
.
В офисе имя хоста - my-dyndns-name
, а имя порта - XXX
.
Итак, у меня есть две версии ~/.ssh/config
.
Дома написано:
Host home
my-fancy-server
Port 22
User abhishek
IdentityFile /home/abhishek/.ssh/id_rsa
(пожалуйста, отрегулируйте последние два значения соответственно. Последнее не требуется, если вы не используете ключи)
В офисе написано
Host home
my-dyndns-name
Port XXX
User abhishek
IdentityFile /home/abhishek/.ssh/id_rsa
У меня есть скрипт, который корректирует содержимое ~/.ssh/config
, когда я переезжаю в новое место.
Можно даже автоматизировать это, написав скрипт, который запускается изменениями в сети.
В моем конфигурационном файле git есть только один пульт, который выглядит как
[remote "origin"]
url = home:/path/to/repo
fetch = +refs/heads/*:refs/remotes/origin/*
РЕДАКТИРОВАТЬ: Я только что узнал, что мне не нужно делать все это. Я только что включил nat loopback на своем маршрутизаторе, и теперь я могу получить единый доступ к своему компьютеру, используя внешнее имя / порт. Однако во многих ситуациях, например в корпоративной сети, связывание с маршрутизатором может быть невозможным