我是一名普通的 Linux 用户,但我对我们提供数据的公司发给我的一些说明有些难以理解。他们希望我们使用 ssh(我以前用过)通过 scp 传输数据。问题是我从未使用过 ssh-keygen,也不完全理解它的工作原理。有人能帮我吗?我会附上说明,这样你就能准确地看到他们发给我的内容。
*在将要发送数据的帐户的“主”目录中,最好创建一个“.ssh”目录(如果不存在)。这是用于管理所有 ssh 密钥对的默认位置。您可以拥有多个不同的密钥对,因此命名约定很有用(默认情况下,ssh-keygen 使用“id-rsa”作为密钥的文件名(id-rsa 表示私钥,id-rsa.pub 表示公钥)。我通常建议创建密钥对的命令是:ssh-keygen -t rsa -N "" -f name -C "account@server_name - brief description"
其中:'-t' 标志用于指定要创建的密钥类型 (rsa),'-N' 标志用于可选密码(“” 为空字符串 - 本质上没有设置密码(这是自动化过程所需要的,但不是在设置个人使用时所需要的)),'-f' 标志用于文件名(这将用于替换默认的 'id_rsa' 名称 - 然后可以在调用 'scp' 命令时指定它),'-C' 标志用于注释字段(如果您有多个密钥,这将很有用,您可以插入密钥用途的简要说明 - 我通常建议在生成密钥的服务器和帐户中包含其主要用途的简要说明;'unduser1@hostname - 将数据传输到 X 公司)。*
谢谢您的帮助!
答案1
本质上,您需要做的是使用 keygen 创建公钥/私钥对。这将为您提供一对文件,例如id_rsa
和id_rsa.pub
。
使用 SSH,您可以将公共部分放入远程帐户,登录时,ssh 可以根据非公共部分检查该部分,并让拥有它的每个人进入。可以非常宽泛地将其视为id_rsa.pub
锁和id_rsa
钥匙。
因此,在任何 Linux 或 Unix 或 MacOS 机器上运行 keygen 它将为你提供这两个文件:
ssh-keygen -t rsa -N "" -C "my rsa key"
然后将id_rsa.pub
文件发送给维护远程计算机的管理员(然后他们需要将其放在远程计算机上的 ~/.ssh 文件夹中)。如果您有远程计算机的密码,则可以使用ssh-copy-id user@hostname
(手册页) 亲自将密钥对发送到那里。
保留私有文件 ( id_rsa
)。然后它需要转到您发起连接的机器。这在很大程度上取决于您使用的操作系统和 SSH 客户端软件。
如果那也是 Linux,您可以将其放入 ~/.ssh 文件夹中(如果需要,请创建一个)。
mkdir ~/.ssh
chmod 700 ~/.ssh
mv id_rsa ~/.ssh
chmod 700 ~/.ssh/id_rsa
从那时起,你应该能够通过 ssh 连接到删除的机器
ssh [email protected]
或者
ssh -i ~/.ssh/id_rsa [email protected]
在 Windows 上,这取决于你用于 SSH 的终端软件,例如ZOC SSH/Telnet 终端您可以提供带有登录信息的私人文件的文件名(请参阅此截屏,该文件将进入“ssh 密钥文件”字段)。这取决于软件。