
Я хочу скопировать файл с исходной машины A на целевую машину B, используя команду и FTP.
Я попробовал это
scp /home/varun/Desktop/Test.java username_for_target_machine@ip_address_of_target_machine:/home/Desktop/
The authenticity of host 'ip_address_of_target_machine (ip_address_of_target_machine)' can't be established.
RSA key fingerprint is 4a:49:cc:9d:ab:f6:ec:4f:b2:0b:63:ef:8f:b8:76:76.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'ip_address_of_target_machine' (RSA) to the list of known hosts.
qaserve@ip_address_of_target_machine's password:
Когда я даю пароль для целевой машины
Permission denied, please try again.
Я пробовал несколько раз, но результат тот же.
- Где я делаю ошибку?
- Как мне указать имя пользователя и пароль в команде, чтобы она не запрашивала пароль?
Обновление:1
Я попробовал использовать ssh. Ниже приведены шаги, которым я следовал.
1. Убедитесь, что на локальном и удаленном хостах запущен openSSH.
OpenSSH_5.3p1, OpenSSL 1.0.1e-fips 11 Feb 2013
2. Сгенерируйте пару ключей на локальном хосте с помощью ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/jsmith/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/jsmith/.ssh/id_rsa.
Your public key has been saved in /home/jsmith/.ssh/id_rsa.pub.
The key fingerprint is:
31:3a:5d:dc:bc:81:81:71:be:31:2b:11:b8:e8:39:a0 jsmith@local-host
3. Установите открытый ключ на удаленном хосте.
[remote-host]$ vi ~/.ssh/authorized_keys
ssh-rsa ABIwAAAQEAzRPh9rWfjZ1+7Q369zsBEa7wS1RxzWR jsmith@local-host
4. Предоставьте соответствующие разрешения для каталога .ssh на удаленном хосте.
[remote-host]$ chmod 755 ~/.ssh
[remote-host]$ chmod 644 ~/.ssh/authorized_keys
5. Войдите с локального хоста на удаленный хост, используя аутентификацию по ключу SSH, чтобы проверить правильность ее работы.
[local-host]$ ssh -l jsmith remote-host
При запуске указанной выше команды я получаю:
ssh: connect to host remote-host port 22: Connection timed out
Когда я печатаю
ssh -l ipaddress_of_remote-host remote-host
Запрашивает пароль: когда я ввожу пароль, он подключается к remote_host.
Почему он снова запрашивает пароль после того, как я зарегистрировал открытый ключ на удаленном хосте?
Обновление 2: Извините за беспорядок.
Я хочу скопировать файл из источника в место назначения, используя любой протокол. Измените разрешение
[удалённый-хост]$ chmod 700 ~/.ssh [удалённый-хост]$ chmod 600 ~/.ssh/authorized_key
решение1
- Вероятно, у вас нет разрешения на /home/Desktop на удаленном сервере, вы можете попробовать /home/username_for_target_machine/Desktop
- Нет, я так не думаю. Но вы можете поискать в Google "ssh Public Key Authentication"
решение2
Вы путаете разные вещи. Во-первых, все это не имеет никакого отношения к ftp. Вы используете scp
, а не ftp
. Почему вы упоминаете ftp? Затем, вы, кажется, пытаетесь подключиться к хосту, используя IP в качестве имени пользователя ( -l
дает имя пользователя для подключения). Кроме того, права доступа для файла неверны authorized_keys
, вам нужно 600
и 700
, а не 644
и 755
. Наконец, это действительно не лучший способ копировать ключи, для этого и есть ssh-copy-id
.
Итак, давайте попробуем с самого начала. Шаги 1 и 2 выполнены, теперь сделайте это:
Удалите запись, которую вы добавили в удаленный
authorized_keys
файл.Исправьте разрешения на удаленном хосте:
[remote-host]$ chmod 700 ~/.ssh/ [remote-host]$ chmod 600 ~/.ssh/authorised_keys
С локального хоста скопируйте свой ключ на удаленный:
[local-host]$ ssh-copy-id -i ~/.ssh/id_rsa.pub user@ipaddress_of_remote-host
Попробуйте войти еще раз
[local-host]$ ssh jsmith@ipaddress_of_remote-host
Похоже, хост не экспортирует свое имя в сеть правильно. Для быстрого исправления выполните:
[local-host]$ echo "ipaddress_of_remote-host имя_хоста" | sudo tee -a /etc/hosts
Это сохранит имя хоста как псевдоним для его IP. Теперь вы сможете подключиться с помощью
ssh user@hostname
.
решение3
Я думаю, что вы не настроили свой FTP, так как он запрашивает пароль, поэтому просто проверьте эту ссылку:
Чтобы настроить FTP-сервер, выполните следующие действия:
**Prepare the FTP server:**
Install the vsftp package.
Open a shell, login as root and save a backup copy of /etc/vsftpd.conf:
cp /etc/vsftpd.conf /etc/vsftpd.conf.bak
Create an access point for anonymous FTP
mkdir ~ftp/incoming
chown -R ftp:ftp ~ftp/incoming
Replace the configuration files depending on the scenario you prefer (refer to the manual page of vsftpd.conf for advanced configuration options):
Allowing Anonymous Read and Write Access
#
listen=YES
# Enable anonymous access to FTP server
anonymous_enable=YES
#
local_enable=YES
# Enable write access
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
dirmessage_enable=YES
# Write log file
xferlog_enable=YES
connect_from_port_20=YES
chown_uploads=YES
chown_username=ftp
ftpd_banner=Welcome to FTP service.
anon_root=/srv/ftp
Grant Restricted Permissions to FTP Users (Home Only)
chroot_local_users=YES
Restart the FTP server:
rcvsftp start
На клиенте просто введите URLftp://ХОСТв вашем браузере или FTP-клиенте. Замените HOST на имя хоста или IP-адрес вашего сервера. Существует множество графических пользовательских интерфейсов, подходящих для просмотра содержимого вашего FTP-сервера. Чтобы получить их список, просто введите FTP в строке поиска менеджера пакетов YaST.