Я пытаюсь скопировать файл в / var / www, потому что я играю с apache. Чтобы переместить файл, я делаю scp -i <ec2-shh-key> localfile root@<ec2-instance-ip>:/var/www/fileremote
.
Но это дает мне ошибку:
Please login as the user "ubuntu" rather than the user "root".
Как я могу решить эту проблему?
РЕДАКТИРОВАТЬ: я обнаружил этот вопрос суперпользователя который отвечает на вопрос, сначала отправляя файл в каталог, отличный от sudo, а затем передавая команду sudo mv через ssh для перемещения файла. Нет возможности сделать это за один шаг с помощью только scp?
Ты можешь. Создайте группу, скажите «www-admin», добавьте свое имя пользователя в эту группу, chown / var / www / fileremote в: www-admin и chmod этот путь, чтобы разрешить групповую запись.
Конечно, если путь был изменен на что-то другое (нестандартная группа), эта группа потеряет весь доступ. Но в этом случае просто добавьте свое имя пользователя в эту группу.
Если вы получаете указанную вами ошибку, значит, вы не указываете «ubuntu @» в команде scp, или вы скопировали файл /root/.ssh/authorized_keys в /home/ubuntu/.ssh/authorized_keys (что было бы плохо поскольку тогда вы не могли войти в систему с помощью ssh).
Это правда, что как только вы начнете указывать «ubuntu @», вы получите ошибку прав доступа, но вы можете обойти это, используя следующую команду:
rsync -vazSHAX --rsync-path "sudo rsync" LOCALILE ubuntu@HOST:/var/www/REMOTEFILE
Ключевым моментом здесь является параметр --rsync-path.
Команда rsync даже позволит вам копировать целые деревья каталогов, как показано ниже:
rsync -vazSHAX --rsync-path "sudo rsync" LOCALDIR/ ubuntu@HOST:REMOTEDIR/
Если вы запустили экземпляр с парой ключей, сгенерированной EC2, вам также может потребоваться указать эту опцию в rsync, указывающую на локальную копию загруженного ключа ssh:
--rsh "ssh -i KEYPAIR.pem"
Вот статья, которую я написал о том, как использовать sudo, ssh, rsync в экземплярах Ubuntu EC2:
Использование sudo, ssh, rsync в официальных образах Ubuntu для EC2
http://alestic.com/2009/04/ubuntu-ec2-sudo-ssh-rsync
Вот статья, в которой я объясняю, как загрузить ваш личный ключ ssh по умолчанию в EC2, чтобы ssh и rsync не нуждались в дополнительных параметрах идентификации:
Загрузка личных ключей ssh в Amazon EC2
http://alestic.com/2010/10/ec2-ssh-keys
Я пришел сюда в поисках ответа и на эту проблему.
В моем случае, хотя я неправильно скопировал ~root/.ssh/authorized_keys
в другую учетную запись, вместо того, чтобы копировать предполагаемый ~ubuntu/.ssh/authorized_keys
.
Пользователь root authorized_keys
В файле есть специальная команда, запрещающая соединение.