`
zhengdl126
  • 浏览: 2538505 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类

scp和ssh公匙认证 双机信任

阅读更多

 

 

 

 

=============================== 1 Linux下不出现提示使用远程拷贝

 

实现:从75scp至76

 

 

ssh到75上:

[root@localhost /]# ssh-keygen -t rsa

 

  Enter file in which to save the key (/home/ludy/.ssh/id_rsa):   //直接输入回车
    Enter passphrase (empty for no passphrase):                         //直接输入回车
    Enter same passphrase again:                                                //直接输入回车

 

 说明:
该命令将在用户的主目录/.ssh目录下面产生一对密钥
一般采用的ssh的rsa密钥:
id_rsa     私钥
id_rsa.pub 公钥
下述命令产生不同类型的密钥
ssh-keygen -t dsa
ssh-keygen -t rsa
ssh-keygen -t rsa1


[root@localhost /]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.1.76

 

等同于 scp /root/.ssh/id_rsa.pub root@172.16.142.5:/root/.ssh/authorized_keys

说明:
将公钥拷贝到远端主机,并写入授权列表文件
你也可以把公钥文件拷贝过去后,在远端主机下直接执行
touch /root/.ssh/authorized_keys
cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys

 


//需要手动ssh连接一次,才能认证生效(无需输入密码)
[root@localhost /]#ssh 192.168.1.76

 

//无需手动输入密码
[root@localhost /]# scp -rp /tmp/t.txt root@192.168.1.76:/temp

 

 

***以上方法可以实现A B C三台服务器之间多机公匙认证***

 

 

 

 ======================================2  ssh全自动实现双机信任脚本

 

 其实ssh的双机无密码登陆无非就是实现密钥验证而已

其实密钥登陆也就是用自己的私钥去验证在目的主机上是否有相对应的公钥
1.首先主机会获取自己家目录下的.ssh目录下的id_rsa私钥文件
2.然后主机会去查找目的主机在其加目录下是否有authorized_keys
3.如果有的话会用自己的私钥来解密看是否是自己的公钥 如果是则登陆成功
4.否则启动密码验证。

实验前设置好sshd的配置文件将会很大提高ssh的链接速度
首先要确保ssh开启了密钥验证(默认开启)我么也可以通过
#RSAAuthentication yes
##PubkeyAuthentication yes
#AuthorizedKeysFile     .ssh/authorized_keys
主要是通过这三个选项

是否开启密码验证
PasswordAuthentication yes

关闭dns解析会加快ssh连接的速度
UseDNS no

实验环境:centos5.4 x86

脚本使用的ssh用户都为root 大家都自行修改

脚本如下:

 

    #!/usr/bin/expect
    #2013-01-18
    #author zhangyifei
    #blog http://zyfforlinux.blog.51cto.com
    set local_passwd "server"
    set des_passwd "server"
    set timeout 10
    set localip "192.168.0.254"
    set desip "192.168.0.251"
    spawn ssh-keygen -t rsa
    expect "Enter file*:" {send "\r"}
    expect "Enter passphrase*" {send "\r"}
    expect "Enter same*" {send "\r";exp_continue}
    spawn ssh-copy-id -i /root/.ssh/id_rsa.pub root@$desip
    expect {
    "yes/no" { send "yes\r";exp_continue}
    "password:" {send "$des_passwd\r";exp_continue}
    }
    
    spawn ssh $desip "ssh-keygen -t rsa"
    expect "Enter file*:" {send "\r"}
    expect "Enter passphrase*" {send "\r"}
    expect "Enter same*" {send "\r";exp_continue}
    
    spawn scp $desip:/root/.ssh/id_rsa.pub /root/.ssh/authorized_keys
    expect {
    "yes/no" { send "yes\r";exp_continue}
    "password:" {send "$local_passwd\r";exp_continue}
    }

此脚本我已经测试成功大家可以放心使用,脚本原理很简单,无法就是借助了expect来实现自动化而已。

 

 

 

 

分享到:
评论

相关推荐

    通过shell脚本执行scp和ssh命令

    通过shell脚本执行scp和ssh命令

    使用ssh、scp不需要密码

    如果将公钥复制到要访问的机器上,并保存到 ~/.ssh/authorized_keys 文件中,那么可以不需要密码使用 ssh 和 scp 进行登陆和文件传输。 使用 Expect 实现密钥对生成 Expect 是一个自动化工具,可以用于自动生成...

    在两台服务器之间建立信任关系解决scp,ssh等不用输入密码等问题.files.rar

    在IT领域,尤其是在系统管理与运维中,经常需要在多台服务器之间进行文件传输或远程登录操作,如使用scp(安全复制)和ssh(安全外壳协议)。为了提高效率并确保安全性,建立两台服务器之间的信任关系是至关重要的。...

    C#版SSH、SCP,可作为客户端连结LINUX源码

    标题中的"C#版SSH、SCP,可作为客户端连结LINUX源码"表明这是一个使用C#编程语言实现的SSH(Secure Shell)和SCP(Secure Copy)客户端库,用于连接Linux服务器。SSH是一种网络协议,用于安全地远程登录到服务器,...

    Linux下SSH及SCP命令简单使用

    SCP(Secure Copy Protocol)是一种基于SSH协议的命令行工具,用于在本地和远程主机之间安全地传输文件。 Linux下SSH命令的基本使用方法包括远程连接到一台支持SSH服务的远程主机。远程主机必须开启SSH服务,并且...

    SSH-SCP使用方法

    ### SSH-SCP使用方法详解 #### 一、概述 SSH (Secure Shell) 是一种网络协议,用于计算机之间的安全登录及数据传输。SCP (Secure Copy Protocol) 是基于SSH协议的一个应用,用于安全地在不同主机之间复制文件。SCP...

    SCP02认证过程总结.pdf

    SCP02认证过程是基于GP2.2智能卡规范中定义的安全通道认证过程。GP2.2智能卡规范是一种通用平台智能卡规范,它定义了智能卡操作系统(COS)中安全及实现等方面的要求。SCP02是一种安全协议,它规定了在智能卡和终端...

    ssh,scp 连接远程ssh非22端口的服务器方法

    总结来说,SSH和SCP都是非常重要的远程管理工具,它们提供了安全的远程登录和文件传输功能。通过指定端口号的方式,我们可以方便地连接到运行非标准SSH端口的服务器上。同时,SFTP作为一种更加强大的文件传输协议,...

    Rsync+ssh双机同步测试及问题解决

    Rsync+ssh双机同步测试及问题解决是指使用Rsync和ssh协议实现双机之间的文件同步和备份。本文将详细介绍如何配置ssh的自动登录、rsync的配置、同步问题和解决方案。 一、配置ssh的自动登录 在进行双机同步之前,...

    使用Ant进行ssh和scp操作

    本文将深入探讨如何利用Ant进行SSH(Secure Shell)和SCP(Secure Copy)操作,这两个协议常用于远程系统间的安全通信。 SSH是一种网络协议,用于安全地在不安全的网络上执行命令和传输数据,而SCP是基于SSH的文件...

    Renci.SshNet.dll及其文档和实现SSH、SCP、FTP等操作的小例子

    Renci.SshNet是一个.NET库,它为开发者提供了一种方便的方式来实现Secure Shell (SSH) 协议,包括Secure Copy (SCP) 和File Transfer Protocol (FTP) 的功能。这个库主要用于安全地远程连接到服务器,执行命令,传输...

    android上工具 scp ssh sshpass tcpdump

    android上工具 scp ssh sshpass tcpdump

    python 实现ssh的执行远端命令和scp的不同机器文件传输功能

    用python 实现ssh的执行远端命令和scp的不同机器文件传输功能。代码简练易懂。

    GP2.2SCP03_GP2.2SCP03_scp03_

    此外,SCP03还涉及到认证机制,包括卡片对读卡器的认证和读卡器对卡片的认证,以确保双方身份的合法性。 在这个压缩包文件中包含的"GP2.2SCP03.pdf"很可能是一个详细阐述GP2.2SCP03协议的技术文档,可能涵盖了以下...

    System_Ssh_scp.rar_linux scp_scp_system scp

    标题中的"System_Ssh_scp.rar_linux scp_scp_system scp"暗示了这是一个关于Linux系统下使用SCP(Secure Copy)命令进行文件传输的教程。SCP是SSH(Secure Shell)的一部分,常用于在不同主机之间安全地复制文件。在...

    SSH中SCP命令的使用

    ### SSH中的SCP命令详解与应用 #### 一、SCP命令简介 **SCP**(Secure Copy Protocol)是一种基于**SSH**(Secure Shell)协议的安全文件传输工具。与传统的`cp`命令不同,`scp`不仅可以实现在同一台机器内部的...

    Xshell和Xftp:SSH,SCP远程终端神器

    SSH(Secure Shell)是一种加密网络协议,用于在不安全的网络上安全地执行远程命令和传输数据,而SCP(Secure Copy)是基于SSH的文件传输协议,能够保证数据在传输过程中的安全性。 Xshell是一款强大的终端模拟器,...

    C#的linux-ssh&scp;封装

    在Linux环境中,SSH(Secure Shell)和SCP(Secure Copy)是两个重要的工具,用于远程管理和传输文件。本项目就是将这些功能封装到C#库中,方便开发者在.NET应用程序中直接调用。 SSH是用于安全远程登录到Linux...

    Linux中配置双机SSH信任 操作说明

    下面是配置双机SSH信任的具体步骤: 1. **在A机生成证书**: 使用`ssh-keygen -t rsa`命令生成RSA类型的公私钥对。默认情况下,公钥保存在`~/.ssh/id_rsa.pub`,私钥保存在`~/.ssh/id_rsa`。在生成过程中,如果不...

    不需要远程传输文件Linux如何关闭scp和sftp命令.docx

    因此,在Linux系统中禁止scp和sftp命令的方法是删除openssh-clients包和修改/etc/ssh/sshd_config文件。这样可以避免scp和sftp命令带来的风险。但是,需要注意的是,禁止这些命令会影响远程文件传输的功能,因此需要...

Global site tag (gtag.js) - Google Analytics