Постоянно хранить адреса при использовании SSH

12

У меня есть несколько удаленных серверов, к которым я подключаюсь через терминал. У серверов нет домена, только IP-адрес, который трудно запомнить, когда я получил несколько из них.

Есть ли способ постоянного хранения значений в терминале, чтобы я мог сделать следующее?

server1 = 111.222.111.222

И введите такие команды, как:

ssh root@server1

вместо того:

ssh root@111.222.111.222
обычно
источник

Ответы:

22

Для соединений SSH вы можете создать файл конфигурации пользователя ~/.ssh/configи разместить там сопоставления, например

Host server1
  Hostname      111.222.111.222

Вы можете легко добавить другие поля, такие как Port(для нестандартных портов) и User(полезно, если ваше имя пользователя в удаленной системе отличается от имени пользователя в локальной системе). Смотрите man ssh_configдля полной информации.

steeldriver
источник
14

Да, просто запишите их в файл /etc/hosts. Он имеет следующий синтаксис:

1.2.3.4 servername additional_servername

Где:

  • 1.2.3.4 это IP-адрес
  • servername это имя
  • additional_servername это необязательное имя

После сохранения вы можете получить доступ к серверу по его имени.

хаос
источник
@ theusual Если вы ответили именно так, пожалуйста, примите его (отметьте галочкой под кнопками «вверх» / «вниз»).
jpmc26
8

Конечно, для вашей конкретной проблемы вы хотите следовать советам @chaos и @steeldriver, но в общем случае, чтобы «постоянно хранить значения в терминале», вы ищете переменные оболочки. Как их установить, будет зависеть от вашей оболочки (я думаю echo $SHELL, предоставит соответствующую информацию).

Если под «навсегда» вы подразумеваете «пока я не покидаю этот терминальный сеанс», то вы можете просто использовать export server1=111.222.111.222команду, если вы используете bashоболочку на основе ( setenv server1 111.222.111.222для оболочки на csh/tcshоснове, если я правильно помню). Тогда вы можете получить доступ к переменной с префиксом $ : ssh root@$server1.

Если под «навсегда» вы подразумеваете «каждый раз, когда я запускаю новый терминал», вам нужно будет установить переменную в одном из файлов инициализации оболочки. Например, $HOME/.bashrcдля bashоболочек на основе или, $HOME/.cshrcпредположительно, с использованием того же синтаксиса, который упоминался в предыдущем абзаце. Обратите внимание, что вам нужно будет получить исходный файл инициализации (например, source $HOME/.bashrcили открыть новую оболочку, чтобы изменения были приняты во внимание.

NB: Ответ по памяти, может потребовать небольших корректировок.

Скиппи ле Гран Гуру
источник
2
Постоянно работаю даже при перезагрузке компьютера. Я посмотрю на это, это может пригодиться когда-нибудь.
обычно
Затем применяется второй метод (файлы инициализации оболочки).
Скиппи ле Гран Гуру
1

Не прямой ответ на вопрос (хаос и Steeldriver уже предоставили то, что я думаю, были бы лучшими буквальными решениями), но если вам нужно только ssh одному пользователю по одному адресу в большинстве случаев, тогда посмотрите на редактирование .bash_aliasesфайл в вашем домашнем каталоге должен быть полезным, так как вы можете создать псевдоним для команды всего терминала.

DTR
источник
0

Конкретные ответы очень хорошие.

В общем, однако, если вы хотите, чтобы некоторые вещи определялись / настраивались в оболочке, просто напишите сценарий, чтобы сделать это, а затем выполните его с sourceили .когда вы хотите, чтобы эта настройка действовала.

Если это то, что вам нужно все время, вы можете получить его в .profile (для оболочек входа в систему) или в .bashrc для всех оболочек (если вы используете bash).

При таком подходе у вас может быть несколько сценариев для настройки различных рабочих сред по мере необходимости, при условии, что вы убедитесь, что они не наступают друг на друга, если вы вызываете один из них после вызова другого первым.

Джо
источник