2013-11-11 3 views
0

У меня есть sftp-соединение с сервером в Unix. Без пароля, я использую синтаксис для подключения и выполнить командукак передать пароль для подключения sftp в сценарии оболочки

SFTP -b $ пользователь @ $ server_name

Может кто-нибудь предложить мне, как я могу написать скрипт для подключения Беспоставочного удаленного сервера в интерактивном режиме с помощью пароля

+0

делает этот час elp: http://stackoverflow.com/questions/5386482/how-to-run-the-sftp-command-with-a-password-from-bash-script?rq = 1 – anubhava

ответ

1

Вы можете использовать файл ~/.ssh/config.

# 
# ~/.ssh/config 
# 

Host servername 
Hostname 127.127.127.127 
Port 22 
User root 

#EOF: config 

Затем просто подключитесь к «ssh servername», и если вы не хотите использовать пароль, вы можете использовать SSH-ключ. Вот хороший учебник о том, как это сделать>http://www.cyberciti.biz/tips/linux-multiple-ssh-key-based-authentication.html

Если вы просто хотите передать пользователю/серверу с терминала, вы можете это сделать.

#!/bin/bash 
sftp -b "$1"@"$2" 

затем использовать его как этот './sftp.sh сервер пользователя'

использования SCP, как это;

scp -P 22 [email protected]:/dir/file.tgz ~/Desktop/ 

использование SFTP как это;

sftp [email protected]:/dir/file.tgz ~/Desktop/file.tgz 

Вы также можете попробовать это;

sftp [email protected] <<EOF 
get /dir/file.tgz 
rm /dir/file.tgz 
EOF 
+0

У меня нет доступа root или нет внешнего доступа. Мне нужно использовать существующие данные и использовать –

+0

Я пытаюсь загрузить файлы с внешнего сервера –

+0

после успешной передачи, я также должен удалить файлы –

0

Лучший способ сделать это было бы создать пару ключей на клиенте, и добавьте ключ к целевому пользователю ~/.ssh/authorized_keys.

Чтобы создать пару ключей, запустите ssh-keygen и, когда он запрашивает пароль, просто нажмите «вернуться», чтобы указать «без пароля». Затем либо запустите ssh-copy-id [email protected]$server_name, либо вручную создайте на сервере ~/.ssh/authorized_keys и скопируйте содержимое ~/.ssh/id_rsa.pub от клиента в него (ssh-copy-id не доступен на всех компьютерах, поэтому на некоторых вам придется делать это вручную).

Теперь вы должны иметь возможность запускать ssh или scp без пароля, так как вместо этого вы должны использовать свой ключ. Если это не сработает, убедитесь, что права на ваш каталог и содержимое ~/.ssh/ верны на обеих машинах; каталог должен быть 0700 (drwx------), а файлы должны быть 600 (-rw-------). Также проверьте, что аутентификация ключа включена как на клиенте, так и на сервере.

+0

У меня нет ни корневого доступа, ни управления на внешнем сервере. Я могу подключиться к удаленному серверу, используя соединение sftp, введя пароль –

+1

@Trinadh Если это так, то ответ об использовании 'expect', вероятно, лучше всего вы можете сделать. Но, если это возможно, вы должны убедиться, что администратор может настроить для вас проверку подлинности на основе ключей, поскольку она более простая и безопасная. –

+0

@Trinadh Можете ли вы войти в эту удаленную машину. Тогда вам не нужны привилегии root или _control_. 'ssh-keygen' работает на уровне пользователя. Вы запускаете команду на сервере (для создания закрытого ключа) и на вашем _client_ (для создания открытого ключа). Затем вы копируете свой закрытый ключ в файл 'authorized_keys'. Я делаю это все время. –

3

Попробуйте с этим ниже вариантом,

LFTP -u $ пользователя, $ передачи SFTP: // $ Хоста < < --EOF--

кд $ каталог

положить $ srcfile

бросить

--EOF--

Смежные вопросы