學(xué)習(xí)啦 > 學(xué)習(xí)電腦 > 操作系統(tǒng) > Linux教程 >

Linux下實(shí)現(xiàn)免密碼登錄方法是什么

時(shí)間: 加城1195 分享

  Linux繼承了Unix以網(wǎng)絡(luò)為核心的設(shè)計(jì)思想,是一個(gè)性能穩(wěn)定的多用戶網(wǎng)絡(luò)操作系統(tǒng)。有用戶問(wèn)到如何實(shí)現(xiàn)免密登錄,這篇文章主要介紹了Linux下實(shí)現(xiàn)免密碼登錄的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,感興趣的朋友一起看看吧

  1.Linux下生成密鑰

  ssh-keygen的命令手冊(cè),通過(guò)”man ssh-keygen“命令:

  通過(guò)命令”ssh-keygen -t rsa“

  生成之后會(huì)在用戶的根目錄生成一個(gè) “.ssh”的文件夾

  進(jìn)入“.ssh”會(huì)生成以下幾個(gè)文件

  authorized_keys:存放遠(yuǎn)程免密登錄的公鑰,主要通過(guò)這個(gè)文件記錄多臺(tái)機(jī)器的公鑰

  id_rsa : 生成的私鑰文件

  id_rsa.pub : 生成的公鑰文件

  know_hosts : 已知的主機(jī)公鑰清單

  如果希望ssh公鑰生效需滿足至少下面兩個(gè)條件:

  1) .ssh目錄的權(quán)限必須是700

  2) .ssh/authorized_keys文件權(quán)限必須是600

  2.遠(yuǎn)程免密登錄

  常用以下幾種方法:

  2.1 通過(guò)ssh-copy-id的方式

  命令: ssh-copy-id -i ~/.ssh/id_rsa.put

  舉例:

  [root@test .ssh]# ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.91.135

  root@192.168.91.135's password:

  Now try logging into the machine, with "ssh '192.168.91.135'", and check in:

  .ssh/authorized_keys

  to make sure we haven't added extra keys that you weren't expecting.

  [root@test .ssh]# ssh root@192.168.91.135

  Last login: Mon Oct 10 01:25:49 2016 from 192.168.91.133

  [root@localhost ~]#

  常見(jiàn)錯(cuò)誤:

  [root@test ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.91.135

  -bash: ssh-copy-id: command not found //提示命令不存在

  解決辦法:yum -y install openssh-clients

  2.2 通過(guò)scp將內(nèi)容寫(xiě)到對(duì)方的文件中

  命令:scp -p ~/.ssh/id_rsa.pub root@:/root/.ssh/authorized_keys

  舉例:

  [root@test .ssh]# scp -p ~/.ssh/id_rsa.pub root@192.168.91.135:/root/.ssh/authorized_keys

  root@192.168.91.135's password:

  id_rsa.pub 100% 408 0.4KB/s 00:00

  [root@test .ssh]#

  [root@test .ssh]#

  [root@test .ssh]#

  [root@test .ssh]# ssh root@192.168.91.135

  Last login: Mon Oct 10 01:27:02 2016 from 192.168.91.133

  [root@localhost ~]#

  也可以分為兩步操作:

  $ scp ~/.ssh/id_rsa.pub root@:pub_key //將文件拷貝至遠(yuǎn)程服務(wù)器

  $ cat ~/pub_key >>~/.ssh/authorized_keys //將內(nèi)容追加到authorized_keys文件中, 不過(guò)要登錄遠(yuǎn)程服務(wù)器來(lái)執(zhí)行這條命令

  2.3 通過(guò)Ansible實(shí)現(xiàn)批量免密

  2.3.1 將需要做免密操作的機(jī)器hosts添加到/etc/ansible/hosts下:

  [Avoid close]

  192.168.91.132

  192.168.91.133

  192.168.91.134

  2.3.2 執(zhí)行命令進(jìn)行免密操作

  ansible -m authorized_key -a "user=root key='{{ lookup('file','/root/.ssh/id_rsa.pub') }}'" -k

  示例:

  [root@test sshpass-1.05]# ansible test -m authorized_key -a "user=root key='{{ lookup('file','/root/.ssh/id_rsa.pub') }}'" -k

  SSH password: ----->輸入密碼

  192.168.91.135 | success >> {

  "changed": true,

  "key": "ssh-rsa    AAAAB3NzaC1yc2EAAAABIwAAAQEArZI4kxlYuw7j1nt5ueIpTPWfGBJoZ8Mb02OJHR8yGW7A3izwT3/uhkK7RkaGavBbAlprp5bxp3i0TyNxa/apBQG5NiqhYO8YCuiGYGsQAGwZCBlNLF3gq1/18B6FV5moE/8yTbFA4dBQahdtVP PejLlSAbb5ZoGK8AtLlcRq49IENoXB99tnFVn3gMM0aX24ido1ZF9RfRWzfYF7bVsLsrIiMPmVNe5KaGL9kZ0svzoZ708yjWQQCEYWp0m+sODbtGPC34HMGAHjFlsC/SJffLuT/ug/hhCJUYeExHIkJF8OyvfC6DeF7ArI6zdKER7D8M0SM  WQmpKUltj2nltuv3w== root@localhost.localdomain",

  "key_options": null,

  "keyfile": "/root/.ssh/authorized_keys",

  "manage_dir": true,

  "path": null,

  "state": "present",

  "unique": false,

  "user": "root"

  }

  [root@test sshpass-1.05]#

  2.4 手工復(fù)制粘貼的方式

  將本地id_rsa.pub文件的內(nèi)容拷貝至遠(yuǎn)程服務(wù)器的~/.ssh/authorized_keys文件中

  補(bǔ)充:Linux基本命令

 ?、賚s 意為list 列出當(dāng)前文件夾中的文件

  -l 顯示文件的屬性 可用ll來(lái)表示

 ?、赼lias 別名 看看是否有別名的文件

 ?、踓d dir 跳躍目錄 -P選項(xiàng) 將路徑中的鏈接文件替換成鏈接指向的文件路徑

  ④pwd 查看當(dāng)前工作的文件夾名 使用-P的選項(xiàng),會(huì)直接進(jìn)入到其中,相當(dāng)于cd

  相關(guān)閱讀:Linuxshell腳本不執(zhí)行問(wèn)題實(shí)例分析

  shell腳本不執(zhí)行問(wèn)題:某天研發(fā)某同事找我說(shuō)幫他看看他寫(xiě)的shell腳本,死活不執(zhí)行,報(bào)錯(cuò)。我看了下,腳本很簡(jiǎn)單,也沒(méi)有常規(guī)性的錯(cuò)誤,報(bào)“:badinterpreter:Nosuchfileordirectory”錯(cuò)。看這錯(cuò),我就問(wèn)他是不是在windows下編寫(xiě)的腳本,然后在上傳到linux服務(wù)器的……果然。原因:在DOS/windows里,文本文件的換行符為rn,而在*nix系統(tǒng)里則為n,所以DOS/Windows里編輯過(guò)的文本文件到了*nix里,每一行都多了個(gè)^M。解決:

  1)重新在linux下編寫(xiě)腳本;

  2)vi:%s/r//g:%s/^M//g(^M輸入用Ctrl+v,Ctrl+m)附:sh-x腳本文件名,可以單步執(zhí)行并回顯結(jié)果,有助于排查復(fù)雜腳本問(wèn)題。


Linux免密登錄相關(guān)文章:

1.詳解CISCO路由密碼設(shè)置與SSH登錄設(shè)置

2.Linux的Ubuntu操作系統(tǒng)的安裝教程

3.關(guān)于Linux下SSH Session復(fù)制功能實(shí)現(xiàn)的方法

4.Linux常用權(quán)限有哪些s權(quán)限和t權(quán)限區(qū)別

5.如何排查L(zhǎng)inux服務(wù)器上的惡意發(fā)包行為

4016695