我尝试使用 ubuntu 命令行将文件上传/下载到我的服务器,但不知何故它一直拒绝我的权限。我尝试使用 -F 和 -i 都不起作用。
我尝试过类似
sudo scp -v /path/to/my/file/ ubuntu@ip-xx-xxx-xxx-xx:~/path/to/where/upload
sudo scp -v -i ~/.s/path/to/my/file/ ubuntu@ip-xx-xxx-xxx-xx:~/path/to/where/upload
sudo scp -v -F ~/.ssh/xxx.pem /path/to/my/file/ ubuntu@ip-xx-xxx-xxx-xx:~/path/to/where/upload
上面只是尝试上传。下载也一样,但当然颠倒了顺序,但也没用。对于下载,我已经使用终端登录服务器,并使用了类似这样的操作,但顺序相反sudo scp -v /path/to/my/file/ ubuntu@ip-xx-xxx-xxx-xx:~/path/to/where/upload
编辑:
出现此类错误,并且我尝试使用触摸,也能够毫无问题地制作文件
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: algorithm: [email protected]
debug1: kex: host key algorithm: ecdsa-sha2-nistp256
debug1: kex: server->client cipher: [email protected] MAC: <implicit> compression: none
debug1: kex: client->server cipher: [email protected] MAC: <implicit> compression: none
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: ecdsa-sha2-nistp256 SHA256:QgAQzu59hpmTEGkNnOdEeflCYVImcwLLU3qQD7foqbE
debug1: Host 'ip-xxx-xx-xx-xx' is known and matches the ECDSA host key.
debug1: Found key in /home/ubuntu/.ssh/known_hosts:1
debug1: rekey after 134217728 blocks
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: rekey after 134217728 blocks
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_EXT_INFO received
debug1: kex_input_ext_info: server-sig-algs=<rsa-sha2-256,rsa-sha2-512>
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Trying private key: /home/ubuntu/.ssh/id_rsa
debug1: Trying private key: /home/ubuntu/.ssh/id_dsa
debug1: Trying private key: /home/ubuntu/.ssh/id_ecdsa
debug1: Trying private key: /home/ubuntu/.ssh/id_ed25519
debug1: No more authentication methods to try.
Permission denied (publickey).
答案1
相关讯息如下:
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Trying private key: /home/ubuntu/.ssh/id_rsa
debug1: Trying private key: /home/ubuntu/.ssh/id_dsa
debug1: Trying private key: /home/ubuntu/.ssh/id_ecdsa
debug1: Trying private key: /home/ubuntu/.ssh/id_ed25519
debug1: No more authentication methods to try.
Permission denied (publickey).
您正在连接的 SSH 服务器(另一台计算机)仅接受公钥身份验证(而不是输入密码等其他方法),并且 SSH 客户端(您所在的计算机)上的所有公钥均未添加到 SSH 服务器~/.ssh/authorized_keys
上。要解决此问题:
- 以用户身份登录 SSH 服务器
ubuntu
- 将 SSH 客户端文件(或中的
~/.ssh/id_rsa.pub
其他文件之一)的内容复制到 SSH 服务器文件中.pub
~/.ssh
~/.ssh/authorized_keys
ssh ubuntu@whatever
尝试通过在 SSH 客户端上运行来连接到 SSH 服务器
答案2
您有几组问题。
首先,您必须区分本地(运行 scp 的地方)和服务器上的权限。
其次,您必须了解,当您使用 sudo 运行 scp 时,您是以 root 身份运行 scp,这会影响本地权限。以 root 身份运行 scp 不会影响服务器上的权限,因为您是以 身份访问服务器的ubuntu
。
我认为您的大部分问题都是因为您以 root 身份运行 scp(使用 sudo)
首先以普通用户身份运行 scp 或 ssh。我猜是因为您一直以 root 身份运行 scp,所以 ~/.ssh 和密钥的权限都是错误的。
sudo chown $YOUR_USER:$YOUR_USER ~$YOUR_USER/.ssh
看http://bodhizazen.com/Tutorials/SSH_keys和http://bodhizazen.com/Tutorials/SSH_security
接下来,您的登录用户必须具有访问本地计算机上文件的权限/path/to/my/file/
,并且服务器用户“ubuntu”必须具有访问服务器上文件的权限,~/path/to/where/upload
如果您有超出该建议的具体问题,我需要具体的细节。
本地用户名、您正在传输的确切文件、本地计算机和服务器上的所有权和权限、~/.ssh 和要传输的文件,以及您正在运行的确切命令和所有输出。
答案3
您的公钥可能不再有效。尝试删除 ECDSA 密钥指纹。
您可以在/home/user/.ssh/known_hosts
台式计算机上的文件中找到它(注意 .ssh 是一个隐藏文件夹,您必须View -> Show Hidden Files
从文件管理器的菜单中选择)。即使文件中有多个密钥,我通常会删除该文件。
ssh [email protected]
进入您的服务器,系统会要求您接受新的 ECDSA 密钥指纹。确保您在 ssh 和 scp 命令中使用服务器的用户名。最后,服务器的用户应该有权访问服务器上您将文件复制到的文件夹。