удаленный сервер SSH на некоторый порт, кроме 22 без пароля


16

Я обычно подключаюсь к удаленному серверу с

ssh user@server.com -p 11000

а затем давая пароль каждый раз для пользователя. Как мне не вводить пароль каждый раз, когда я подключаюсь по ssh?

Ответы:


23

Сначала вставьте это в ~/.ssh/config:

Host server
HostName server.com
Port 11000
User user

Вы сможете ssh server, затем введите пароль.

Во-вторых , проверьте, есть ~/.ssh/ли у вас файлы с именами id_rsaи id_rsa.pub. Если нет, у вас нет настроенного ключа, поэтому вы должны сгенерировать пару, используя ssh-keygen. Вы можете дать ключи пароль или нет. Сгенерированный файл id_rsa.pubдолжен выглядеть так:

ssh-rsa lotsofrandomtext user @ local

В-третьих , ssh на сервер, создайте файл, ~/.ssh/authorized_keysесли он не существует. Затем добавьте содержимое ~/.ssh/id_rsa.pubсгенерированного ранее здесь. Это может означать копирование содержимого файла в буфер обмена, затем открытие ~/.ssh/authorized_keysв текстовом редакторе и вставку.

Или используйте команду ssh-copy-id server(замените serverна имя в ~/.ssh/config). Это будет делать то же самое, что и выше. Временами я видел ssh-copy-idзастревание, поэтому мне это не очень нравится.

Теперь вы сможете использовать ssh с помощью just ssh server, если только вы не решили защитить свой закрытый ключ с помощью ключевой фразы. Обычно, если вы не используете парольную фразу, вы должны защитить свой закрытый ключ другими способами (например, полное шифрование диска).

В-четвертых (требуется только в том случае, если вы защищаете свой закрытый ключ парольной фразой), введите это в~/.bashrc :

start_ssh_agent() {
    # Try to use an existing agent
    save=~/.ssh-agent
    if [[ -e "$save" ]]
    then
        . "$save" > /dev/null
    fi
    # No existing agent, start a new one
    if [[ -z "$SSH_AGENT_PID" || ! -e "/proc/$SSH_AGENT_PID" ]]
    then
        ssh-agent > "$save"
        . "$save" > /dev/null
        ssh-add
    fi
}
start_ssh_agent

При этом вам нужно будет вводить фразу-пароль только один раз при загрузке компьютера.


2
«Повествование» также должно включать обсуждение того, как избегать постоянного ввода этой надоедливой парольной фразы. :-) ssh-agent и / или keychain - это возможности для рассмотрения.
Фахим Митха

1
Кроме того, если ваше имя пользователя на удаленном хосте не совпадает с вашим именем пользователя на локальном хосте, вы можете добавить User userстроку в ~/.ssh/config.
CJM

@Faheem Это хорошо, но я никогда не настраивал такую ​​штуку, поэтому я не думаю, что могу рассказать другим об этом :)
phunehehe

@FaheemMitha там вы идете :)
phunehehe

Эй, лучше поздно, чем никогда.
Фахим Митха


4

В качестве дополнения к ответу phunehehe см. Руководство по связке ключей Gentoo Linux для руководства по связке ключей . Брелок также использует ssh-agent . Демон ssh-agent делает парольную фразу доступной (она становится недоступной, когда демон ssh-agent умирает), но связку ключей reuses an ssh-agent between logins, and optionally prompts for passphrases each time the user logs in, чтобы процитировать руководство.

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