如何使用ssh-keygen在两台计算机之间build立连接

我想在两台电脑之间使用rsync命令,两台电脑都安装了RedHat 5.3,当我使用rsync命令的时候,我发现我必须在它们之间build立公钥,不要提示密码。 获得公钥并使rsync完美工作的最佳方式是什么?

注意:我遵循很多教程,并没有findauthorized_keys(位于/root/.ssh/下)。 我发现已知的主机文件。

需要在要连接的计算机上创build公钥/私钥对,然后需要将公钥复制到要连接的计算机上。 对于这个解释,我们可以调用你想要从本地连接的机器和要连接到远程的机器。

第1步 – 在本地生成密钥对

> ssh-keygen -t dsa 

这个命令会在你的home文件夹中创buildid_dsa和id_dsa.pub,即〜/ .ssh / id_dsa和〜/ .ssh / id_dsa.pub

步骤2 – 将公钥添加到要连接的计算机上的authorized_keys文件中。

  1. 将〜/ .ssh / id_dsa.pub的内容复制到剪贴板上
  2. 打开一个SSH会话到远程

本地> SSH用户@远程

  1. 打开authorized_keys文件进行编辑,如果不存在则创build

remote> vi〜/ .ssh / authorized_keys

  1. 如果文件为空,请按i,然后将剪贴板内容粘贴到文件中。 如果文件具有条目,则使用箭头键导航到底部,然后按i并粘贴剪贴板的内容。
  2. input:wq保存文件
  3. 更改authorized_keys文件的权限

    远程> chmod 600〜/ .ssh / authorized_keys

您现在应该可以使用该键连接到远程机器。

 local> ssh user@remote 

由于这是一个常见的任务,我创build了一个shell脚本来处理它。 这将创build本地SSH密钥对(如果它尚不存在),然后将其复制到远程机器。

 #!/bin/bash keytype="rsa" while getopts "t:" opt; do case $opt in "t") keytype=$OPTARG;; esac done shift $(($OPTIND - 1)) if [[ $# != 1 ]]; then echo "Usage: $0 [-t rsa|dsa] [user]@host" exit fi KEYFILE=~/.ssh/id_$keytype AUTHFILE=.ssh/authorized_keys if [[ ! -e $KEYFILE ]]; then echo "Creating key..." ssh-keygen -t $keytype -f $KEYFILE fi if [[ -e $KEYFILE ]]; then echo "Logging in..." ssh $1 "[[ -d .ssh ]] || mkdir .ssh && [[ -e $AUTHFILE ]] || touch $AUTHFILE && chmod 0600 $AUTHFILE && cat - >> $AUTHFILE" < $KEYFILE.pub fi 

最后的ssh命令可以用ssh-copy-idreplace。 我没有这样做,因为我在发现ssh-copy-id之前编写了这个程序,对我来说这个工作一直很好。

当你想用密钥使用ssh时,你需要的第一件事就是一把钥匙。
使用dsaencryption创build密钥(或通过rsareplacersa进行rsaencryption)

 $ ssh-keygen -t dsa 

当被问及“密码”时,我们不会input密码。 只需按两次input。 现在,ssh-keygen程序将生成你的公钥和私钥,默认情况下,你的密钥存储在你的主目录中的.ssh /目录中。

为了能够使用双密钥login到远程系统,首先必须将远程服务器上的公用密钥添加到远程计算机主目录下.ssh /目录下的authorized_keys文件中。

 $ cd ~/.ssh; scp id_dsa.pub username@target:./id_dsa.pub $ ssh username@target $ mkdir ~/.ssh; chmod 700 ~/.ssh $ cat id_dsa.pub >> ~/.ssh/authorized_keys $ chmod 600 ~/.ssh/authorized_keys $ rm -fr id_dsa.pub 

您现在可以不使用密码ssh到远程系统的帐户。

当不使用端口22作为ssh时,将这一行改为:ssh $ 1“[[-d .ssh]] … to ssh'-p 3433'$ 1”[[-d .ssh]] …(用3433替代你的SSH端口号)

伟大的脚本!

干杯,py