удаленный сервер 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

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

phunehehe
источник
2
«Повествование» также должно включать обсуждение того, как избегать постоянного ввода этой надоедливой парольной фразы. :-) ssh-agent и / или keychain - это возможности для рассмотрения.
Фахим Митха
1
Кроме того, если ваше имя пользователя на удаленном хосте не совпадает с вашим именем пользователя на локальном хосте, вы можете добавить User userстроку в ~/.ssh/config.
CJM
@Faheem Это хорошо, но я никогда не настраивал такую ​​штуку, поэтому я не думаю, что могу рассказать другим об этом :)
phunehehe
@FaheemMitha там вы идете :)
phunehehe
Эй, лучше поздно, чем никогда.
Фахим Митха
7

Перейдите к аутентификации на основе ключей .

9000
источник
Спасибо за предложение . Я искал на форумах, но у меня были проблемы с портом ( 11000 вместо 22 ). С помощью ssh -P 11000я смог скопировать с помощью SSH. Большое спасибо.
Прабеш Шреста
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, чтобы процитировать руководство.

Фахим Митха
источник