Я хочу настроить двухфакторную аутентификацию на сервере, на котором у меня нет учетной записи администратора. Цель этого: я хочу дать другим людям возможность создавать SSH-туннели к этому серверу (через мою учетную запись), но я не хочу, чтобы у них был доступ к оболочке.
Единственная подсказка, которую я нашел до сих пор, - это создать собственный скрипт .bash_profile, который запрашивает второй пароль, как в этом вопросе:
Однако это бесполезно, так как все еще можно войти через sftp и удалить скрипт.
Так возможно ли это сделать без привилегий суперпользователя?
Вы перепутали терминологию в своем вопросе. Сначала вы запрашиваете двухфакторную аутентификацию. Затем вы перейдете к объяснению ваших потребностей, которые никак не связаны с двухфакторной аутентификацией. Сама по себе двухфакторная аутентификация не накладывает никаких ограничений на то, что пользователь может делать после аутентификации.
Наложение ограничений на то, что можно делать с помощью ssh-входа, возможно, если для аутентификации используется открытый ключ.
В ~/.ssh/authorized_keys
, вы можете наложить ограничения на то, для чего можно использовать каждый ключ, указанный в этом файле. Например, если вы не хотите разрешать доступ к оболочке, вы можете принудительно выполнить команду, которая ничего не делает:
command="/bin/false" ssh-rsa ...
Ключ в этой строке не будет иметь доступа ни к оболочке, ни к sftp. Его все еще можно использовать для переадресации портов, пока -N
флаг используется на стороне клиента. Возможны многие другие ограничения. Полный список ограничений, которые вы можете наложить на использование ключей, см. На странице руководства sshd.