Чтобы передать файлы с сервера удаления, мне нужно сначала войти в систему с паролем, а затем ввести команду, чтобы получить файлы в локальную папку, и мой терминал должен быть открыт до тех пор, пока эта передача не будет завершена.
Есть ли способ передать открытый ключ в scp и начать передачу через скрипт bash? Тогда откажитесь от сценария bash и выключите терминал?
Какие еще варианты есть, чтобы использовать его на заднем плане?
Я не уверен, что понимаю, что вы ищете. Вы хотите запустить сценарий Bash на локальном компьютере, который ничего не делает, кроме вызова scp
(который обрабатывает аутентификацию ключа с помощью ssh
внутренности)? Или вы хотите запустить свой скрипт на удаленном сервере? Или вы, возможно, хотите использовать конкретный открытый ключ?
Чтобы запустить команду или скрипт в фоновом режиме, не допуская остановки процесса при получении сигнала SIGHUP от вашего терминала (т.е. когда вы его закрываете), вы можете использовать nohup <command or script> &
.
Предполагая, что ваш скрипт назван script.sh
, вы можете запустить его с nohup script.sh &
. Сценарий может запускать следующую команду (если вы хотите принудительно использовать конкретный открытый ключ):
#!/bin/sh
scp -B -i /home/user/.ssh/id_rsa_key.pub /path/to/your/files username@remote.host:.
Если вам не нужно использовать файл сценария или упрощать команду, вы всегда можете использовать свой ~/.ssh/config
файл для этого:
Host RemoteServer
Hostname remote.host
User username
IdentityFile ~/.ssh/id_rsa_key.pub # If you need to force a particular key
Port 22 # Not necessary either, port 22 is default
Таким образом, команда для запуска может быть такой же «простой» для запуска, как nohup scp /path/to/your/files RemoteServer:. &
Не стесняйтесь рассказать мне больше о своей конфигурации и / или о том, что вы именно хочу добиться, и я отредактирую свой ответ, чтобы отразить изменения.