Я хочу знать, как я могу подключиться автоматически с помощью sftp с паролем в качестве аргумента в той же команде, чтобы получить автоматический вход в систему и выполнить один раз.
Пример:
Я хочу поместить это в сценарий и попытаться составить одно предложение для выполнения этой задачи.
Ура,
Есть четыре способа сделать SSH / scp без пароля:
Создать новый ssh-ключ без парольной фразы на клиенте и добавьте его в authorized_keys
на сервере.
То же, что и выше, но задайте парольную фразу для ключа и используйте ssh-agent
, чтобы разблокировать его перед запуском scp.
Используйте общий доступ к ssh-соединению, возможно, с соответствующей настройкой ControlPersist
, чтобы войти на сервер до запуска scp. Scp будет повторно использовать то же соединение и не будет нуждаться в пароле.
Используйте какой-нибудь хитрый скрипт для ввода пароля, но ssh / scp активно препятствуют этому, так что это не так просто, как хотелось бы.
Я настоятельно рекомендую вам изучить первые два варианта (вариант 2 более безопасен) и вариант 3, если authorized_keys недоступны. Есть много мест, где описано, как это сделать.
Вариант 4 возможен (я вижу, что кто-то уже опубликовал решение), но вы должны знать, что это приведет к утечке вашего пароля другим пользователям машины и / или всем, кто может прочитать ваш скрипт. Ключи ssh защищены от всех, кроме пользователя root, а ключи, защищенные парольной фразой, защищены даже от root (не считая взлома ssh-agent).
Выполните следующее:
ssh-keygen -t rsa -b 2048
затем
touch ~/.ssh/config
Теперь отредактируйте конфигурацию, чтобы она выглядела примерно так:
# host-specific options
Host enigma
HostName mydomain.com
Port 2547
ServerAliveInterval 120
User YOURUSERNAME
TCPKeepAlive Yes
Теперь подключитесь
ssh-copy-id username@server.com
Вы должны иметь возможность подключитесь к серверу, используя имя хоста в файле конфигурации.
т.е. ssh enigma
В моем файле конфигурации около 20 подключений, и все они кратко указаны, поэтому мне не нужно каждый раз вводить домен и пароль.
Безопасный недостаток в том, что все соединения SSH, если вы не начинаете создавать другие файлы хоста. Находятся в одном файле. Защищено одним паролем. Итак, если вы сохраняете 20 подключений к одному файлу, то, если этот пароль скомпрометирован, то все 20 подключений будут скомпрометированы.
Я использую несколько файлов hosts: Personal, Work и Misc это не большая проблема, если утечка пароля тогда