scp 使用密钥文件作为参数,如果可能的话我该怎么做?

scp 使用密钥文件作为参数,如果可能的话我该怎么做?
scp -i ~/.ssh/id_rsa.pub events*$date*_QA.log $remote_user@$remote_server:$remote_location

上述脚本是否不正确?我是否做得不正确?

我进入.ssh目录,看到远程服务器在known_hosts文件中。

但是,当我执行普通的 scp 而没有任何文件作为参数时,它仍然要求输入密码

scp events*$date*_QA.log $remote_user@$remote_server:$remote_location

如何在我的命令中包含密钥文件?

sh-3.2$ grep server ~/.ssh/*
/home/user/.ssh/known_hosts:server....com,ip_addr ssh-rsa Asine=jhjsdhfjsadhfjkashdfjhasdjfhksadjfhasjdfhj

答案1

 -i identity_file
         Selects the file from which the identity (private key) for public
         key authentication is read.  This option is directly passed to
         ssh(1).

使用~/.ssh/id_rsa

答案2

这也许能帮助到其他新手。

[我知道这是一个多余的循环示例,但它很适合说明] 场景:

  1. 从 Mac 到 Ubuntu 的 ssh
  2. Mac -> Ubuntu 中的 scp 文件
  3. 从 Ubuntu -> Mac 关闭 ssh 和 scp 文件

我只在 Mac 上创建了 ssh 密钥(通过 ssh-keygen),并通过(ssh-copy-id)与运行 Ubuntu 的机器共享了这些密钥。因此,我可以在运行 Ubuntu 的机器上登录 Mac 时复制文件,但反过来不行。

解决方案:我必须在 Ubuntu 机器上创建 ssh 密钥并与我的 Mac 共享。然后我才能在 Ubuntu 机器上成功运行以下命令

Mac IP: 192.168.1.40
Ubuntu IP: 192.168.1.38

在 Mac 上

ssh-keygen
ssh-copy-id [email protected]

ssh [email protected]

# Now on Ubuntu
ssh-keygen
ssh-copy-id [email protected]

现在以下命令应该复制文件而不要求输入密码苹果

sudo scp -i /home/ubuntu/.ssh/id_rsa [email protected]:~/Documents/Fluff/Version-Control/tools/pull.sh .

答案3

我通常使用这个:

scp -P <port_if_not_22> -i <path_to_keyfile> <source> <target>

例子:

scp -P 666 -i "T:\.ssh\id_rsa" "D:\somePath\someFile.txt" [email protected]:/root/Downloads/someFile.txt

答案4

通过以下说明进行测试和更正: https://askubuntu.com/questions/46930/how-can-i-set-up-password-less-ssh-login

当我在我的机器(CentOS/CentOS)上测试时,这里的说明完美无缺。我猜想问题是您的 ssh 密钥未与用户名绑定。

例如:cat authorized_keys # 在 Box 上,我正在通过 sshing/scpin 连接到 ssh-rsa BLAHBLAHBLAHBLAH/zAcS4kD9pyPAjD3/gd5D1rcQa6IztCMR9yMXiGFnxviWsT8/oYevZw25k4yREuA8ibLKC9peH1X4LK1E+n7gq4TETexWkZbQ2XGLOX44eglra3MB4FShPg0cZXGcJWltPQ/y0Ay2A/KmaC14YrDfqwm7+ibTiUp4hOO8I6eIPmwwGn/2hs0SewJXisGqUx2v[电子邮件保护]#用户名与密钥绑定,并且是授权主机

相关内容