精华内容
下载资源
问答
  • SSH 配置

    千次阅读 2016-09-22 20:03:36
    SSH 批量管理 SSH介绍 SSH是Secure Shell Protocol的简写,由IETF网络工作小组(Network working Group)指定;在进行数据传输之前,SSH先对联机数据包通过加密技术进行加密处理,加密后在进行数据传输。确保...

    SSH

    批量管理


    SSH介绍

    SSH是Secure Shell Protocol的简写,由IETF网络工作小组(Network working Group)指定;在进行数据传输之前,SSH先对联机数据包通过加密技术进行加密处理,加密后在进行数据传输。确保了传递的数据安全

    SSH是专为远程登录会话和其他网络服务提供的安全性协议。利用SSH协议可以有效的放置远程管理过程中的信息泄露问题,在当前的生产环境运维工作中,绝大多数企业普遍采用SSH协议服务来代替传统的不安全的远程联机服务软件,如telnet(23端口,非加密) 
    在默认状态下,SSH服务主要提供了两个服务功能,一个是提供类似Telnet远程联机服务器的服务,即上面提到的SSH服务;另一个是类似FTP服务的sftp-server,借助SSH协议来传输数据的,提供更安全的SFTP服务(vsftp,proftp

    SSH客户端(SSH命令)还包含一个远程安全拷贝命令scp,也是通过ssh协议工作 
    1.png-64.4kB

    ssh小结

    1、SSH是安全的加密协议,用于远程连接linux服务器 
    2、SSH默认端口是22,安全协议版本SSH2,除了2之外还有SSH1(漏洞) 
    3、SSH服务端主要包含两个服务协议SSH远程连接,SFTP服务 
    4、Linux SSH客户端包含ssh远程连接命令,以及远程拷贝scp命令

    SSH结构

    SSH服务由服务端软件OpenSSH (openssl)和客户端(常见的有SSH(linux),SecureCRT,Putty,Xshell)组成,SSH服务默认使用22端口提供服务,它有两个不兼容的SSH协议版本分别是1.x和2.x
    

    检查安装SSH

    1. [root@web01 ~]# rpm -qa openssh
    2. openssh-5.3p1-111.el6.x86_64 远程连接安装包
    3. [root@web01 ~]# rpm -qa openssl
    4. openssl-1.0.1e-42.el6.x86_64 加密安装包

    OpenSSH同时支持SSH 1.x2.x 用SSH 2.x的客户端程序不能链接到SSH1.x的服务程序上

    SSH服务是一个守护进程(daemon),他在后台运行并响应来自客户端的连接请求,SSH服务端的进程名为sshd,负责实时监听远程SSH客户端的连接请求,并进行处理,一般包括公共密钥认证、密钥交换、对称密钥加密和非安全连接等。

    SSH客户端包含ssh以及像scp(远程拷贝)slogin(远程登录)sftp(安全FTP文件传输)等应用程序

    SSH的工作机制大致是本地的ssh客户端发送一个连接请求到远程的ssh服务器,服务器检查连接的客户端发送的数据包和ip地址,如果确认合法,就会发送密钥给SSH的客户端,此时,客户端本地再将密钥发回给服务端,自己建立连接。SSH1.x和SSH2.x在连接协议上有一些安全方面的差异

    SSH加密技术

    SSH加密技术是将人类可以看得懂的数据,通过一定的特殊的程序算法,把这些数据变成杂乱的无意义的信息,然后,通过网络进行传输,二挡到了目的地后,在通过对应的解密算法,把传过来的加密的数据信息解密成加密前的可读取的正常数据。因此,当数据在互联网上传输时即使被有心的黑客监听窃取了,也很难获取到真正需要的数据 
    网络上的数据包加密技术一般是通过所谓的一对公钥私钥(Public key and Pivate key)组合撑的密钥对进行加密解密操作。 
    2.png-42.2kB

    SSH 1.x 
    每一台SSH服务器主机都可以使用RSA加密方式来产生一个1024-bit的RSA Key 这个RSA的加密方式就是用来产生公钥和私钥的算法之一。 
    当服务动时,就会产生一个768 bit的临时公钥存放在Server

    1. [root@m01 ~]# grep ServerKey /etc/ssh/sshd_config
    2. #ServerKeyBits 1024

    3.png-80.8kB

    SSH 2.x 
    SSH 1.x的联机过程中,当Server接收Clinet端Private Key后,就不再针对该次联机的Key pair进行检验。若此时有而已黑客对该联机key pair插入而已的程序代码时,由于服务端你不会在检验联机的正确性,因此可能会接收该程序代码,从而导致系统被黑 
    为了改正这个缺点,SSH version2多加了一个确认联机正确性的Diffie-Hellman机制 
    在每次数据传输中,Server都会以该机制检查数据的来源是否正确,这样,可以避免联机过程中被插入而已程序代码的问题 
    另外,SSH2同时支持RSADSA密钥,但是SSH1仅支持RSA密钥 
    由于SSH1协议本身存在较大问题,建议使用SSH2的联机模式 
    当Client端SSH联机请求传送过来时,Server就会将这个768-bit的公钥传给Client端 
    此时Client会将此公钥与先前存储的公钥进行对比,看是否一致,判断标准是Client端联机用户目录下~/.ssh/known_hosts文件的内容(linux-客户端) 
    1.png-109.2kB

    不加用户默认是root 不加-p 指定端口 默认是22

    1. [root@m01 ~]# ssh -p52113 oldboy@10.0.0.41
    2. The authenticity of host '[10.0.0.41]:52113 ([10.0.0.41]:52113)' can't be established.
    3. RSA key fingerprint is 96:66:71:6c:ab:2f:8d:58:ce:2c:19:78:a7:ad:13:58.
    4. Are you sure you want to continue connecting (yes/no)?

    不加账户默认是root

    连接密码文件存放路径

    1. [root@backup /]# cat ~/.ssh/known_hosts
    2. 10.0.0.7 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA3KsbWJYe6fa2by0asfaZluclFBDtJH61HYG/jxxNEXhVqkGfdp2vN6tHroTFSMPdOHNbqOZICP8YQRpS9UMddfeZxWpf/+HwJLe+40J5eCVY/YgVaDIUVJrxVgkUfB4/XBoUawhSoqLQELnQHVeayHLvQSiZmlFYTaQ0Vb7g+qO7cUHdxi5/1zCplJhq9TMbz78yfWrwvP3iX6x/QdBX72OKUSS02b7KSwhfGj76OX56BmnQx8fVMMotrxTtWuRqYAw+BBtAjr197SZ4J0aJagWHod6HDxA4yfYebB/RuBtmd2va4+TqQtq6N2zvZ7Z5ud2drpZZmruIdGg91mlMLQ==

    如何防止SSH登录入侵:

    1、用密钥登录,不用密码登录 
    2、牤牛阵法:解决SSH安全问题 
    3、防火墙封闭SSH,指定源限制(局域网,信任公网) 
    4、开启SSH只监听本地内网IP(ListenAddress 10.0.0.8) 
    5、尽量不给服务器外网IP

    远程连接SSH服务

    ssh基本使用语法 
    ssh -p52113 oldboy@172.16.1.1 
    1. 连接远程主机命令的基本语法 
    2. -p小写接端口,默认22端口时可以省略-p22 
    3. -@ 前面为用户名,如果当前用户连接,可以不指定用户 
    4. @后面为要连接的服务器的IP

    密钥存储路径

    1. [oldboy@m01 ~]$ cat ~/.ssh/known_hosts

    如果端口已修改为特殊端口,那么用上面命令连接就会发生问题

    1. [oldboy@m01 ~]$ ssh -p22 oldboy@10.0.0.31
    2. ssh: connect to host 10.0.0.31 port 22: Connection refused #提示拒绝连接

    保存的结果可能为: 
    1、no route to hosts 可能为防火墙 
    2、Connection refused 可能是防火墙,可能是连接端口错误

    远程执行命令(最好全路径) ssh -p 22 root@10.0.0.1 /sbin/ifconfig

    SSH小结:

    1、切换到别的机器上 ssh -p52113 user@ip 
    2、到其他机器执行命令(不会切到机器上) ssh -p 52113 user@ip 命令 
    3、当第一次SSH连接的时候,本地会产生一个密钥文件~/.ssh/known_hosts

    SSH客户端附带的远程拷贝scp命令

    scp的基本语法使用:scp -sercure copy (remote file copy program) 
     PUSH 
    scp -P22 -rp /tmp/oldboy oldboy@10.0.0.1:/tmp 
     PULL

    1. scp -P22 -rp root@10.0.0.1:/tmp/oldboy/ /tmp/

    参数: 
    #→ -P(大写)接接口,默认22 可以省略 
    #→-r 递归,表示拷贝目录 
    #→-p 表示在拷贝前后保持文件或目录属性 
    # -l 限制速度

    scp 知识小结:

    1、scp是加密的远程拷贝,而cp仅为本地拷贝 
    2、可以把数据从一台机器推送到另一台机器,也可以从其他服务器把数据拉回到本地执行命令的服务器 
    3、每次都是全量完成拷贝,因此效率不高,适合第一次拷贝用,如果需要增量拷贝,用rsync

    ssh服务附带的sftp功能服务

    windows客户端和linux服务器之间传输数据工具:

    1) rz、sz(lrzsz) 
    2) winscp WinSCP-v4.0.5 基于SSH,sftp 
    3) SFX(xshell) 4) SFTP 基于SSH加密传输 
    5) samba,http,ftp,nfs 
    FTP工具:vsftp、proftpd、SFTP

    linux sftp客户端连接sftp服务方法

    登录FTP的方法就是sftp oldboy@10.0.0.1 如果ssh端口为52113,则命令如下

    1. [oldboy@m01 ~]$ sftp -oPort=52113 oldboy@10.0.0.31
    2. Connecting to 10.0.0.31...
    3. sftp> cd /home/oldboy

    #还可以像命令行那些切换目录

    1. sftp> put /etc/hosts #把/etc/hosts
    2. 从客户端本地传到nfs服务器当做连接目录
    3. Uploading /etc/hosts to /home/oldboy/hosts
    4. /etc/hosts 100% 349 0.3KB/s 00:00
    5. sftp>ls -l /home/oldboy #可以查看目录

    SSH服务认证类型介绍

    基于口令的安全验证:

    基于口令的安全验证的方式就是大家现在一直在用的,只要知道服务器的SSH端口号口令,应服务器的IP及开放的端口,默认都为22,就可以通过ssh客户端登录到主机,此时联机过程中所有传输都是加密

    基于密钥的安全验证:

    基于密钥的安全验证方式是指,需要依靠密钥,也就是必须事先建立一对密钥,然后把公用密钥(Publickey)放在需要访问的目标服务器上,另外,个还需要把私有密钥(Private key)放到SSH客户端或对应的客户端服务器上

    此时,如果要想连接到这个带有公用密钥的SSH服务器,客户端SSH软件或者客户端端服务就会想SSH服务端发出请求,请求用联机用户密钥进行安全连接。SSH服务会在收到请求之后,会现在改SSH服务器上连接的用户的加密路下 放上去的对应用户密钥,然后把它和连接的SSH客户端发来进行密钥,如果两个密钥一直SSH服务就会用公用密钥加密“质询”(challenge)并把它发送给SSH客户端 
    2.png-19.7kB

    3.png-198kB

    更改ssh默认登录配置

    修改SSH服务的运行参数,是通过修改配置文件/etc/ssh/sshd_config实现的 
    一般来说SSH服务使用默认的配置已经够很好的工作,如果对安全要求不高,仅仅提供SSH服务的情况不需要修改任何配置 
    sshd_config配置文件说明: 
    4.png-41.2kB

    优化SSH配置文件选项

    1. [root@m01 etc]# cp /etc/ssh/sshd_config{,.ori} 修改配置文件前进行备份
    2. [root@m01 etc]# vim /etc/ssh/sshd_config
    3. Port 52113 //ssh连接端口默认为22,修改端口号可以提高级别
    4. PermitRootLogin no //禁止root远程登录
    5. PermitEmptyPasswords no //禁止空密码的用户登录
    6. UseDNS no //不使用DNS进行解析
    7. GSSAPIAuthentication no //会导致SSH连接慢

    SSH远程连接服务慢的解决方案

    1. 在这里我们可以使用`sed`进行一键替换
    2. [root@m01 etc]# sed -r '13 iPort 52113\nPermitRootLogin no\nPermitEmptyPasswords no\nUseDNS no\nGSSAPIAuthentication no' /etc/ssh/sshd_config

    准备工作

    优化SSH

    sed -i ’13 iPort 52113\nPermitRootLogin no\nPermitEmptyPasswords 
    no\nUseDNS no\nGSSAPIAuthentication no’ /etc/ssh/sshd_config

    1. sed -i '13 iPort 52113\nPermitRootLogin no \n 禁止root登录
    2. PermitEmptyPasswords no \n 禁止使用密码
    3. UseDNS no\n 禁用DNS
    4. GSSAPIAuthentication no' 禁用GSSAPI
    5. sshd_config

    检查houst解析

    1. cat >>/etc/hosts/ <<EOF
    2. 172.16.1.5 lb01
    3. 172.16.1.6 lb02
    4. 172.16.1.7 web02
    5. 172.16.1.8 web01
    6. 172.16.1.51 db01 db01.etiantian.org
    7. 172.16.1.31 nfs01
    8. 172.16.1.41 backup
    9. 172.16.1.61 m01
    10. EOF结束

    实验步骤

    1. [root@m01 /]# useradd oldboy
    2. [root@m01 /]# echo "123456"|passwd --stdin oldboy
    3. [root@m01 /]# id oldboy
    4. [root@m01 /]#su oldboy
    5. [oldboy@web01 ~]$ ssh-keygen -t dsa //非交互式创建密钥

    #ssh-keygen是生产密钥的工具 -t参数是指定密钥的类型,这里是建立dsa类型密钥 
    #也可以使用ssh-keygen -t rsa来建立rsa类型密钥 
    #RSA与DSA加密算法的区别 
    #RSA:是一种加密算法(PS:RSA也可以进行数字签名的)它的简写的来由是RonRivest、Adi Shamir和LeonAdleman 这三个姓氏加在一起就是RSA 
    #DSA就是数字签名算法的英文全称的简写,即Digital Sigenature Algorithm=DSA 
    RSA既可以进行加密,也可以进行数字签名实现认证,而DSA只能用于数字签名

    脚本分发密钥

    1. yum install -y sshpass
    2. ssh-keygen -t rsa -P '' -f ~/.ssh/id_dsa &>/dev/null
    3. sshpass -p 123456 ssh -o StrictHostKeyChecking=no 用户名@主机名

    一键产生密钥对:

    1. ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa >/dev/null 2>&1
    2. echo -"\n"|ssh-keygen -t dsa -""
    1. [oldboy@web01 ~]$ ll -la
    2. total 28
    3. drwx------. 3 oldboy oldboy 4096 May 6 00:59 .
    4. drwxr-xr-x. 3 root root 4096 May 1 04:39 ..
    5. -rw-------. 1 oldboy oldboy 25 May 5 18:58 .bash_history
    6. -rw-r--r--. 1 oldboy oldboy 18 Jul 24 2015 .bash_logout
    7. -rw-r--r--. 1 oldboy oldboy 176 Jul 24 2015 .bash_profile
    8. -rw-r--r--. 1 oldboy oldboy 124 Jul 24 2015 .bashrc
    9. drwx------ 2 oldboy oldboy 4096 May 6 00:59 .ssh 注意权限
    1. [oldboy@web01 .ssh]$ ll
    2. total 8
    3. -rw------- 1 oldboy oldboy 668 May 6 00:59 id_dsa 私钥=钥匙
    4. -rw-r--r-- 1 oldboy oldboy 602 May 6 00:59 id_dsa.pub 公钥=锁

    [oldboy@web01 .ssh]$ssh-copy-id -i id_dsa.pub oldboy@10.0.0.41 
    ssh-copy-id 只能发公钥,不能发私钥 
    -i 代表发送的文件 代表默认发送(端口22情况)

    1. [oldboy@web01 .ssh]$ ssh-copy-id -i id_dsa.pub “-p 52113 oldboy@10.0.0.41

    代表改变端口-p 后面加上修改后的端口即可

    1. [oldboy@web01 ~]$ ssh-copy-id -i .ssh/id_dsa.pub oldboy@172.16.1.31
    2. [oldboy@web01 ~]$ ssh-copy-id -i .ssh/id_dsa.pub "-p52113 oldboy@172.16.1.41"

    SSH免密码登录小结:

    1)免密码登录是单向的,方向从私钥(钥匙)==》公钥(锁) 
    2)SSH免密码登录基于用户的,最好不要跨不同的用户 
    3)ssh连接慢的问题解决

    例子:将本地hosts发送给指定的ip

    第一种 sudo 提权实现没有权限用户拷贝

    1. [root@web01~]#echooldboyALL= NOPASSWD:/usr/bin/rsync ”>>/etc/sudoers
    2. [root@web01~]#visudo -c
    3. [oldboy@web01 ~]$scp -P52113 hosts oldboy@172.16.1.31:~ //最好发送到家目录下,直接发送到/下是没有权限
    4. [oldboy@web01 ~]$ssh -p52113 -t oldboy@172.16.1.31 sudo rsync ~/hosts /etc/hosts
    5. 需要授权sudo权限

    第二种 利用suid实现没有权限用户拷贝(了解即可,不建议使用)

    1. [root@web01~]#chmod u+s `which rsync`
    2. [oldboy@web01 ~]$scp -P52113 hosts oldboy@172.16.1.31:~
    3. [oldboy@web01 ~]$ssh -p52113 oldboy@172.16.1.31 rsync ~/hosts /etc/hosts

    第三种 使用root进行操作 
    rsync使用

    1. rsync -avz hosts -e ssh -p 52113oldboy@172.16.1.31:~

    1、可以增量备份 
    2、使用ssh隧道加密传输

    常用连接介绍:

    1.png-34.5kB

    发送文件脚本

    1. [cyh888@m01 ~]$ sh fenfa.sh hosts
    2. hosts 10.0.0.41 is ok [ OK ]
    3. hosts 10.0.0.31 is ok [ OK ]
    4. [cyh888@m01 ~]$ cat hosts
    5. 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
    6. ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
    7. 172.16.1.5 lb01
    8. 172.16.1.6 lb02
    9. 172.16.1.7 web02
    10. 172.16.1.8 web01
    11. 172.16.1.51 db01 db01.etiantian.org
    12. 172.16.1.31 nfs01
    13. 172.16.1.41 backup
    14. 172.16.1.61 m01
    15. ===================2016-05-08=====
    16. [cyh888@m01 ~]$

    查看对方系统版本

    1. [oldboy@web01 ~]$ sh view.sh
    2. ====172.16.1.41====CentOS release 6.7 (Final)
    3. ====172.16.1.31====CentOS release 6.7 (Final)
    4. [oldboy@web01 ~]$ cat view.sh
    5. #!/bin/sh
    6. for n in 41 31
    7. do
    8. echo -n "====172.16.1.$n====" -n代表不换行
    9. ssh -p 22 172.16.1.$n cat /etc/redhat-release
    10. done
    11. [oldboy@web01 ~]$ sh view.sh "cat /etc/redhat-release"
    12. ====172.16.1.41====CentOS release 6.7 (Final)
    13. ====172.16.1.31====CentOS release 6.7 (Final)
    14. [oldboy@web01 ~]$ cat view.sh
    15. #!/bin/sh
    16. for n in 41 31
    17. do
    18. echo -n "====172.16.1.$n===="
    19. ssh -p 22 172.16.1.$n $1 $1脚本当中第一个参数
    20. done

    [oldboy@web01 ~]$ sh view.sh “iostat” 查看系统中的IO

    1. ====172.16.1.41====Linux 2.6.32-573.el6.x86_64 (backup) 05/06/2016 _x86_64_ (1 CPU)
    2. avg-cpu: %user %nice %system %iowait %steal %idle
    3. 0.01 0.00 0.14 0.10 0.00 99.76
    4. Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
    5. scd0 0.00 0.01 0.00 264 0
    6. sda 0.18 4.90 0.77 99662 15746
    7. ====172.16.1.31====Linux 2.6.32-573.el6.x86_64 (nfs01) 05/06/2016 _x86_64_(1 CPU)
    8. avg-cpu: %user %nice %system %iowait %steal %idle
    9. 0.03 0.03 0.22 0.20 0.00 99.53
    10. Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
    11. scd0 0.00 0.00 0.00 264 0
    12. sda 0.51 14.88 12.88 1153072 997908
    1. [oldboy@web01 ~]$ sh view.sh "free -m"
    2. ====172.16.1.41====
    3. total used free shared buffers cached
    4. Mem: 475 107 367 0 11 34
    5. -/+ buffers/cache: 60 414
    6. Swap: 1023 0 1023
    7. ====172.16.1.31====
    8. total used free shared buffers cached
    9. Mem: 475 417 57 0 28 288
    10. -/+ buffers/cache: 100 374
    11. Swap: 1023 0 1023
    12. 脚本里面将echo -n中的-n取消即可

    批量分发文件:(housts

    1. [oldboy@web01 ~]$ scp -P22 hosts 172.16.1.41:~
    2. hosts 100% 349 0.3KB/s 00:00
    3. [oldboy@web01 ~]$ scp -P22 hosts 172.16.1.31:~
    4. hosts 100% 349 0.3KB/s 00:00

    脚本内容

    1. [oldboy@web01 ~]$ sh fenfa.sh
    2. hosts 100% 349 0.3KB/s 00:00
    3. hosts 100% 349 0.3KB/s 00:00
    4. [oldboy@web01 ~]$ cat fenfa.sh
    5. #!/bin/sh
    6. for n in 41 31
    7. do
    8. echo -n "====172.16.1.$n===="
    9. scp -P22 hosts 172.16.1.$n:~
    10. done

    另一种方法:

    1. [oldboy@web01 ~]$ sh fenfa.sh hosts
    2. hosts 100% 349 0.3KB/s 00:00
    3. hosts 100% 349 0.3KB/s 00:00
    4. [oldboy@web01 ~]$ cat fenfa.sh
    5. #!/bin/sh
    6. for n in 41 31
    7. do
    8. echo -n "====172.16.1.$n===="
    9. scp -P22 $1 172.16.1.$n:~
    10. done

    控制不输入任何命令进行操作

    1. [oldboy@web01 ~]$ sh fenfa.sh
    2. USAGE:/bin/sh fenfa.sh FILENAME
    3. [oldboy@web01 ~]$ cat fenfa.sh
    4. #!/bin/sh
    5. if [ $# -ne 1 ];then $#参数多少
    6. echo "USAGE:/bin/sh $0 FILENAME" $0脚本名字
    7. exit 1 1脚本执行后的状态
    8. fi
    9. for n in 41 31
    10. do
    11. echo -n "====172.16.1.$n===="
    12. scp -P22 $1 172.16.1.$n:~ 对应第一个执行命令
    13. done
    1. [oldboy@web01 ~]$ sh fenfa.sh
    2. USAGE:/bin/sh fenfa.sh FILENAME
    3. [oldboy@web01 ~]$ sh fenfa.sh hosts 成功ok 失败no
    4. dis hosts to 172.16.1.41 [ OK ]
    5. dis hosts to 172.16.1.31 [ OK ]

    脚本内容

    1. #!/bin/sh
    2. . /etc/init.d/functions
    3. if [ $# -ne 1 ];then
    4. echo "USAGE:/bin/sh $0 FILENAME"
    5. exit 1
    6. fi
    7. for n in 41 31
    8. do
    9. scp -P22 $1 172.16.1.$n:~ &>/dev/null
    10. if [ $? -eq 0 ];then
    11. action "dis $1 to 172.16.1.$n" /bin/true
    12. else
    13. action "172.16.1.$n" /bin/false
    14. fi
    15. done

    expect语言 解决非交互式输入密码的问题 
    yum -y install expect 默认不存在需要安装

    1. [root@m01 ~]# which expect
    2. /usr/bin/expect

    2.png-94.3kB

    ssh+rsync+sersync简单易用 
    Saltstack 
    pupet 大网站用 
    ansible (不需要客户端) 
    cfengine (已淘汰)

    SSH批量管理步骤:

    1、ssh优化和hosts解析 
    2、创建用户 
    3、生成密钥对 
    4、分发公钥到所有服务器 ssh-copy-id 
    5、测试 远程连接ssh 远程执行命令ssh ifconfig 
    远程拷贝文件scp rsync-e隧道模式

    展开全文
  • Git ssh 配置及使用

    万次阅读 2016-12-11 15:40:19
    前言:前几天在写博客 手把手教你用Hexo + github 搭建自己博客的时候,经常需要...Git ssh 配置及使用 git ssh 配置多个账户 Git config 使用说明 Git 配置别名 —— 让命令变得更简单 闲聊 这篇教程是在电脑

    前言:前几天在写博客 手把手教你用Hexo + github 搭建自己博客
    的时候,经常需要用到一些git操作,截了好多图,于是就想干脆整理成一系列的git 教程,总结如下


    闲聊

    这篇教程是在电脑上已经安装好git的前提之上的,要进行以下配置,请先确保你的电脑已经安装好git。以下配置步骤是在git bash里面进行配置的,可以通过 右键》 git bash here 打开

    在管理Git项目上,很多时候都是直接使用https url克隆到本地,当然也有有些人使用SSH url克隆到本地。

    这两种方式的主要区别在于:使用https url克隆对初学者来说会比较方便,复制https url然后到git Bash里面直接用clone命令克隆到本地就好了,但是每次fetch和push代码都需要输入账号和密码,这也是https方式的麻烦之处。

    而使用SSH url克隆却需要在克隆之前先配置和添加好SSH key,因此,如果你想要使用SSH url克隆的话,你必须是这个项目的拥有者。否则你是无法添加SSH key的,另外ssh默认是每次fetch和push代码都不需要输入账号和密码,如果你想要每次都输入账号密码才能进行fetch和push也可以另外进行设置。前面的几篇介绍Git的博客里面采用的都是https的方式作为案例,

    今天主要是讲述如何配置使用ssh方式来提交和克隆代码。

    大概可以分为一下几个步骤

    • 设置Git的user name和email:(如果是第一次的话)
    • 检查是否已经有SSH Key。
    • 生成密钥
    • 添加密钥到ssh-agent
    • 登陆Github, 添加 ssh
    • 测试:

    1、设置Git的user name和email:(如果是第一次的话)

    # 这里的“xujun" 可以替换成自己的用户名
    git config --global user.name "xujun"
    # 这里的邮箱 gdutxiaoxu@163.com  替换成自己的邮箱
    git config --global user.email  "gdutxiaoxu@163.com"
    

    检查是否已经有SSH Key。

      cd ~/.ssh
    

    接着输入ls,

    ls
    

    列出该文件下的文件,看是否存在 id_isa 和 id_isa.pub 文件(也可以是别的文件名,只要 yourName 和 yourName.pub 承兑存在),如果存在的话,证明已经存在 ssh key了,可以直接跳过 生成密钥 这一步骤,

    下图是存在的情况下

    3、生成密钥

    # 这里的邮箱 gdutxiaoxu@163.com  替换成自己的邮箱
    ssh-keygen -t rsa -C "gdutxiaoxu@163.com"
    

    连续3个回车。如果不需要密码的话。
    最后得到了两个文件:id_rsa和id_rsa.pub。

    默认的存储路径是:

    C:\Users\Administrator\.ssh
    

    4、添加密钥到ssh-agent

    确保 ssh-agent 是可用的。ssh-agent是一种控制用来保存公钥身份验证所使用的私钥的程序,其实ssh-agent就是一个密钥管理器,运行ssh-agent以后,使用ssh-add将私钥交给ssh-agent保管,其他程序需要身份验证的时候可以将验证申请交给ssh-agent来完成整个认证过程。

    # start the ssh-agent in the background
    eval "$(ssh-agent -s)"
    

    添加生成的 SSH key 到 ssh-agent。

    ssh-add ~/.ssh/id_rsa
    

    5、登陆Github, 添加 ssh 。

    把id_rsa.pub文件里的内容复制到这里

    6、测试:

    ssh -T git@github.com
    

    你将会看到:

    Hi humingx! You’ve successfully authenticated, but GitHub does not provide shell access.

    如果看到Hi后面是你的用户名,就说明成功了。

    扩展

    如果我之前的仓库是用https提交的,那么我现在想用ssh 的方式提交,怎么办呢 ,别急,下面就来教你怎样操作了。

    这里同样以我本机目录下的G://test 仓库为例子,

    找到仓库下 .git 文件夹下的config文件,打开,可以看到以下内容

     [core]
    	repositoryformatversion = 0
    	filemode = false
    	bare = false
    	logallrefupdates = true
    	symlinks = false
    	ignorecase = true
    [remote "origin"]
    	url = https://github.com/gdutxiaoxu/test.git
    	fetch = +refs/heads/*:refs/remotes/origin/*
    [branch "master"]
    	remote = origin
    	merge = refs/heads/master
    

    将文件中的 url = https://github.com/gdutxiaoxu/test.git 更改为 url = git@github.com:gdutxiaoxu/test.git 即可。

    修改后的文件如下

    [core]
    	repositoryformatversion = 0
    	filemode = false
    	bare = false
    	logallrefupdates = true
    	symlinks = false
    	ignorecase = true
    [remote "origin"]
    	url = git@github.com:gdutxiaoxu/test.git
    	fetch = +refs/heads/*:refs/remotes/origin/*
    [branch "master"]
    	remote = origin
    	merge = refs/heads/master
    

    进入本地仓库 ,增加 xujun.txt 文件,提交,你会看到不需要再提交密码了

    远程仓库

    到此本篇博客为止,下一篇博客将讲解电脑怎样配置多个ssh key。


    推荐阅读

    一步步拆解 LeakCanary

    Android 面试必备 - http 与 https 协议

    Android 面试必备 - 计算机网络基本知识(TCP,UDP,Http,https)

    Android 面试必备 - 线程

    Android_interview github 地址

    大家如果觉得不错的话,可以关注我的微信公众号程序员徐公

    1. 公众号程序员徐公回复黑马,获取 Android 学习视频
    2. 公众号程序员徐公回复徐公666,获取简历模板,教你如何优化简历,走进大厂
    3. 公众号程序员徐公回复面试,可以获得面试常见算法,剑指 offer 题解
    4. 公众号程序员徐公回复马士兵,可以获得马士兵学习视频一份

    展开全文
  • ssh配置

    万次阅读 2013-09-05 10:50:24
    配置SSH,以管理员的身份打开cygwin,运行: cygrunsrv -S sshd 启动sshd服务

    配置SSH,以管理员的身份打开cygwin,运行:

    cygrunsrv -S sshd

    启动sshd服务

    出现问题1:

    cygrunsrv: Error starting a service: QueryServiceStatus: Win32 error 1062

    可能是/var/log的权限设置不正确。首先执行 mkpasswd 和 mkgroup 重新生成权限信息,再删除sshd服务,重新配置

    解决办法

    $ mkpasswd -l > /etc/passwd
    $ mkgroup -l > /etc/group
    $ cygrunsrv -R sshd
    $ ssh-host-config -y
    $ cygrunsrv -S sshd


    出现问题2:

    cygrunsrv: Error stopping a service: OpenService: Win32 error 1060


    解决办法:

    重新安装SSH。


    错误3:3534错误,查看日志 
    Privilege separation user sshd does not exist 
    方法一(推荐): 
    修改/etc/passwd文件,在其中加入 
    sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin 
    或者 
    sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin 
    我加入的是: 
    sshd:x:109:65534::/var/run/sshd:/usr/sbin/nologin 
    参考 
    http://www.unixguide.net/comments/sun/ssh_installation.shtml/37.shtml 
    http://www.gipsky.com/modules/newbb/viewtopic.php?topic_id=966 

    方法二(不推荐): 
    修改/etc/ssh/sshd_config文件 
    将其中 
    UsePrivilegeSeparation yes 
    修改为 
    UsePrivilegeSeparation no 
    虽然能解决问题,但是降低了ssh的安全级别。


    最后利用命令:net start sshd

    启动SSHD。



    展开全文
  • ubuntu18.04 ssh配置

    千次阅读 2019-04-02 22:28:35
    ubuntu18.04 ssh配置ubuntu18.04 ssh配置服务端设置客户端设置在本地主机上运行以下命令:本地主机端登录相关的其他命令:退出远程登录进阶:利用公钥省去口令输入生成密钥对复制公钥至服务器 ubuntu18.04 ssh配置 ...

    ubuntu18.04 ssh配置

    转载至Ubuntu下使用SSH 命令用于登录远程桌面

    服务端设置

    sudo apt install openssh-server
    sudo apt install net-tools
    sudo /etc/init.d/ssh start #服务器启动ssh-server服务
    sudo /etc/init.d/ssh stop #server停止ssh服务
    sudo /etc/init.d/ssh restart #server重启ssh服务
    ifconfig

    客户端设置

    这一步需要知道服务器的用户名及IP地址。

    在本地主机上运行以下命令:

    用户端连接服务器用于登录远程桌面(以下user时远程主机的用户名)

    sudo apt install openssh-client
    ssh xxx@xxx.xxx.xxx.xxx
    #或
    ssh -l xxx xxx.xxx.xxx.xxx
    #如果需要调用图形界面程序
    ssh -X xxx@xxx.xxx.xxx.xxx

    初次登录时会出现以下信息,请记住要输入的密码是服务器主机本身的登陆密码:
    在这里插入图片描述以上表示连接成功,且命令提示副前的用户名@主机名由本地主机变成服务器的信息,即表明现在该终端所有的命令都是在服务器中执行。

    本地主机端登录相关的其他命令:

    • 如果服务器的SSH服务没有开启在22端口,那么SSH链接时则需要用-p指定端口(如202):

    ssh -p 202 xxx@xxx.xxx.xxx.xxx
    #或
    ssh -l xxx -p 202 xxx.xxx.xxx.xxx

    退出远程登录

    用Ctrl+D或者exit

    进阶:利用公钥省去口令输入

    每次登录远程主机都需要输入密码是很不便捷的,如果要加速这一步骤,可以利用密钥对进行连接,主要思路是:生成一对公钥私钥,私钥在local主机上,公钥在远程服务器上,每次建立ssh连接自动检查密钥对是否匹配。

    生成密钥对

    ssh-keygen -t rsa #-t表示选择类型,类型为rsa

    执行以后会在$HOME目录下生成一个.ssh文件夹,其中包含私钥文件id_rsa和公钥文件id_rsa.pub。

    复制公钥至服务器

    #登录远程服务器
    ssh yucicheung@10.170.11.147
    #在服务器上创建.ssh文件夹,如果已经存在就跳过此步
    mkdir .ssh
    #为了保证.ssh文件夹的安全,应取消其他用户对文件夹的所有权限
    chmod 700 .ssh
    #退出登录
    exit
    #本地主机的公钥复制到远程服务器,作为已认证密钥
    scp /home/yucicheung/.ssh/id_rsa.pub yucicheung@10.170.44.206:/home/yucicheung/.ssh/authorized_keys

    在进行以上配置以后,再进行连接时,就可以免去口令(密码)的输入了。

    展开全文
  • 华为交换机SSH配置

    千次阅读 2020-06-15 14:19:49
    设备:S5700 一、在本地设备服务端生成秘钥对## [Huawei]rsa local-key-pair create ...[Huawei-ui-vty0-4]protocol inbound ssh 配置允许登录接入用户类型的协议(all | ssh | telnet) 三、创建用户以及密码## ...
  • 一:SSH配置文件相关参数详细说明 1)SSH客户端配置文件 [root@controller ~]# vi /etc/ssh/sshd_config # $OpenBSD: sshd_config,v 1.93 2014/01/10 05:59:19 djm Exp $ # This is the sshd server system-...
  • IDEA git SSH配置

    千次阅读 2019-11-20 20:21:43
    Git安装完之后,需要做最后一步配置,如果你没有做这项配置,是没有git公钥和私钥的,而上传代码到远程仓库的时候需要秘钥进行验证是否本人上传的,想要创建可以使用下面的方法: ...SSH配置 1、打开git...
  • linux-ssh配置

    千次阅读 2017-04-18 16:44:49
    安装SSH: yum install ssh 启动SSH: service sshd start 设置开机运行: ...SSH配置: 1、修改vi /etc/ssh/sshd_config,根据模板将要修改的参数注释去掉并修改参数值: Port 22 指定SSH连接的端口号
  • Linux ssh 配置

    千次阅读 2012-04-20 15:08:07
    1:检查SSH环境 检查Linux是否安装了ssh ...SSH配置文件一般存放在/etc/ssh/目录下的ssh_config文件。 ssh_config文件时OpenSSH系统范围的配置文件。允许通过不同的选项来改变客户端程序的运行方式。
  • 思科SSH配置

    万次阅读 2019-01-03 14:54:00
    R1(config)#hostname R1 //配置ssh的时候路由器的名字不能为router R1(config)#aaa new-model //默认是no aaa new-model, 如果配置为aaa new-model,line vty就不需要配置login local R1(config)#ip domain-name ...
  • VSCode:Remote-SSH配置实录

    万次阅读 多人点赞 2019-05-08 11:20:40
    为什么要使用VSCode:Remote-SSH 服务器很多时候都是部署在Linux远程机器上的,我们通常是SSH连过去然后用vim或者emacs去修改源文件。 这种方式对我来说很麻烦,因为我...这个组合其实是比较好的,只不过配置特别麻烦...
  • Git配置和使用(SSH配置

    千次阅读 2015-09-23 10:53:31
    第一步:生成SSH Key Git是分布式的代码管理工具,远程的代码...github的SSH配置如下: 一 、 设置Git的user name和email: $ git config --global user.name "xuhaiyan" $ git config --global user.ema
  • git ssh配置及使用

    千次阅读 2018-05-02 10:04:50
    git ssh配置及使用设置git的username和email(如果是第一次的话)git config --global user.name "momo-0902" git config --global user.email "329053928@qq.com"检查是否有ssh keycd ~/.ssh ls如果存在id_isa和id_...
  • git ssh 配置多个账户

    千次阅读 2016-12-11 15:44:01
    前言:前几天在写博客 手把手教你用Hexo + github 搭建自己博客的时候,经常需要...Git ssh 配置及使用 git ssh 配置多个账户 Git config 使用说明 Git 配置别名 —— 让命令变得更简单 闲聊 一台电脑上有一个ss
  • 码云git TortoiseGit SSH配置

    千次阅读 2016-11-17 09:52:51
    2 下载TortoiseGit,TortoiseGit的SSH配置 右键更新的Git项目,选择TortoiseGit -- Settings 在弹出的对话框中点击NetWork在右侧的区域配置SSH Client项为Git安装目录下bin/ssh.exe文件,注意是Git的安装目录下的...
  • H3C交换机SSH配置(20200922)

    千次阅读 2020-09-23 21:03:36
    H3C交换机SSH配置(20200922)H3C SSH配置方案1: (AAA认证+Password认证)H3C SSH配置方案2: (AAA认证+Publickey认证+FTP上传文件) 实验拓扑: H3C SSH配置方案1: (AAA认证+Password认证) #配置VLAN...
  • //查看系统版本 [root@localhost cat /etc/redhat-...//修改ssh配置 增加一个ssh端口 [root@localhost ssh]# vi sshd_config 修改sshd_config配置文件 vi /etc/ssh/sshd_config  PubkeyAuthentication yes #启用公
  • SSH配置使用证书登录

    千次阅读 2017-10-31 14:29:07
    1. 查看SSH配置文件.  # vim /etc/ssh/sshd_config 2.修改不使用密码登录(sshd_config最后一行) PasswordAuthentication yes 改为 PasswordAuthentication no 3. 查看密匙配置地址. AuthorizedKeysFile...
  • ssh配置config快速登录服务器

    万次阅读 2018-10-16 17:18:13
    通过如下命令生成密钥(回车即可,使用默认配置) ssh-keygen-t rsa 1.客户端(自己mac配置) cd ~/.ssh // 切换到该目录下 ls //显示当前目录下文件 配置config(没有的话自己新建一个) Host 后面是别名 u...
  • 华为SSH配置

    万次阅读 2018-02-19 09:32:13
    SSH是一种在不安全网络上提供安全远程登陆及其他安全网络服务的协议.SSH是指Secure shell,SSH协议族由IETF(internet engineering task force)的network working group制定,SSH协议的内容SSH协议是建立在应用层和...
  • linux运维_ssh配置限制ip访问

    千次阅读 2018-11-19 14:27:13
    ssh配置限制ip访问 打开SSH服务 /etc/init.d/ssh start 修改ssh的配置(关闭root无密码登录) vim /etc/ssh/sshd_config 把配置文件中的 PermitRootLogin without-password前面加一个&quot;#&quot;号,注释掉...
  • ssh配置文件和ssh命令

    千次阅读 2019-04-22 11:07:01
    ssh远程管理登录命令 ssh root@IP 以root用户登录IP这台主机 实验中,通过虚拟机中的centos7(作为客户端)去远程登录阿里云管理的主机(作为服务器端),因为ssh是利用非对称加密原理,所以第一次登录时需要从阿里...
  • gitlab git ssh 配置多个帐户-不同git仓库使用不用的ssh key 生成 ssh - key manager@mobile:~/.ssh$ ssh-keygen -t rsa -C "yangxx@gmail.com" Generating public/private rsa key pair. Enter file in which to...
  • CentOS下SSH配置方法详解

    万次阅读 2016-07-04 08:53:33
    CentOS下SSH配置方法详解 ssh是linux系统中一个常用的远程管理工具了,比ftp要强大,下面给大家讲在centos中ssh配置方法吧。 SSH 为 Secure Shell 的缩写,由 IETF 的网络工作小组(Network Working Group)所...
  • ubuntu16.04 ssh配置和树莓派远程登录

    千次阅读 2019-01-07 18:10:59
    ssh配置 ssh是一种安全协议,主要用于给远程登录会话数据进行加密,保证数据传输的安全 首先安装ssh sudo apt-get install openssh-server 开启ssh服务; sudo service ssh start 使用gedit修改配置文件”...
  • Cisco 交换机/路由器 ssh 配置

    千次阅读 2017-06-15 06:50:24
    摘要: Cisco 交换机 路由器 接口 技巧 ssh 配置 一准备工作: 1.开启交换机/路由器 2.连击Console控制线,到控制电脑 3.打开com口控制软件(支持ssh协议) 二配置工作: 1.进入特权模式 Cisco> enable 2...
  • 1.生成RSA秘钥 #ssh-keygen -t rsa 2.在服务器上安装公钥 #cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys 3.设置权限 #chmod 600 /root/.ssh/...4.编辑SSH配置文件,打开秘钥登录,关闭密...
  • [size=xx-large]SSH配置-在Windows下远程登陆Linux服务器Shell[/size] [size=large] SSH是访问远程Linux主机的主要手段, 特别是当用户需要操作Linux和Windows主机的时候, 在Windows上能非常方便的通过SSH访问Linux...
  • ssh配置公私钥远程登录Linux主机

    千次阅读 2018-01-19 19:15:42
    ssh配置公私钥远程登录Linux主机 1、什么是SSH? 简单说,SSH是一种网络协议,用于计算机之间的加密登录。 如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使...
  • ssh配置config文件

    万次阅读 2017-09-22 22:40:20
    配置之前我们先生成ssh密钥。 # 使用以下命令 一路回车即可 ssh-keygen -t rsa # 为.ssh目录设置权限 chmod 600 ~/.ssh/ config文件配置十分简单,只需要按照以下格式配置即可。 # config文件需要放到 ~/.ssh/...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 399,753
精华内容 159,901
关键字:

ssh配置