Настроил открытый/закрытый ключ на CentOS6 — все еще позволяю подключаться без закрытого ключа

Настроил открытый/закрытый ключ на CentOS6 — все еще позволяю подключаться без закрытого ключа

У меня есть VPS с CentOS 6. Я заметил много попыток входа через SSH, поэтому я хочу заблокировать его с помощью аутентификации на основе ключей. Вот что я сделал на данный момент...

Запустил следующее на моем клиентском компьютере (OSX)

ssh-keygen -t rsa

Сделал это с настройками по умолчанию (без парольной фразы, имена по умолчанию и т. д.)

Установите следующие разрешения для моего клиента

chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa

скопировал свой открытый ключ в корень моей пользовательской папки на моем VPS с помощью следующей команды (поддельное имя/IP)

scp id_rsa.pub [email protected]:/home/fakeuser/id_rsa.pub

Здесь я заметил, что у меня НЕТ файла authorized_keys в моем .ssh. Поэтому я использовал touch, чтобы создать его. Затем я использовал CAT, чтобы скопировать содержимое .pub в файл authorized_keys

cat id_rsa.pub >> ~/.ssh/authorized_keys

и установите соответствующие разрешения для .ssh и authorized_keys

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

В /etc/ssh/sshd_config я раскомментировал следующее

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

Затем я перезапустил sshd.

service sshd restart

Из того, что я прочитал, это все, что мне нужно сделать, чтобы включить аутентификацию с открытым ключом. Однако, когда я пытаюсь использовать SSH без указания -i privatekey, мне разрешают войти со всех устройств.

решение1

Если клиентский ключ находится в расположении по умолчанию, ~/.ssh/id_$algон используется автоматически, если только вы не используете -o IdentitiesOnly=yes(или эквивалентную запись в файле конфигурации), чтобы отключить его. Если вы можете подключиться с клиента, у которого нет копии закрытого ключаибез указания пароля, то аутентификация на вашем сервере настроена некорректно. Если вы хотите использоватьтолькоаутентификация privatekey->publickey, настройка PasswordAuthentication no.

PS: anything >>fileanything >fileтакже) создает файл, если он не существует, он вам не нужен touch. И удаленный каталог по умолчанию для scp— это ваш домашний каталог, поэтому вам обычно не нужно его указывать.

Также:

RSAAuthenticationпредназначен для SSHv1, который был сломан несколько десятилетий назад и никогда не должен использоваться; он отключен по умолчанию во всех версиях OpenSSH уже давно и полностью удален со стороны сервера, начиная с версии 7.4, хотя я предполагаю, что в CentOS 6, вероятно, нет такой последней версии.

PubkeyAuthentication yesи AuthorizedKeysFile .ssh/authorized_keys(plus authorized_keys2, который является реликтом и больше не используется) являются значениями по умолчанию, поэтому вам на самом деле не нужно их раскомментировать.

решение2

Вам необходимо явно отключить аутентификацию по паролю на сервере, если вы хотите разрешить только открытые/закрытые ключи. В вашем /etc/ssh/sshd_configизменении или добавлении настройки:

PasswordAuthentication no

Я также предпочитаю явно отключать все другие типы аутентификации, которые я не использую, такие как Kerberos и GSSAPI.

Связанный контент