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

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

時間: 加城1195 分享

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

  1.Linux下生成密鑰

  ssh-keygen的命令手冊,通過”man ssh-keygen“命令:

  通過命令”ssh-keygen -t rsa“

  生成之后會在用戶的根目錄生成一個 “.ssh”的文件夾

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

  authorized_keys:存放遠(yuǎn)程免密登錄的公鑰,主要通過這個文件記錄多臺機器的公鑰

  id_rsa : 生成的私鑰文件

  id_rsa.pub : 生成的公鑰文件

  know_hosts : 已知的主機公鑰清單

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

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

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

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

  常用以下幾種方法:

  2.1 通過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 ~]#

  常見錯誤:

  [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 通過scp將內(nèi)容寫到對方的文件中

  命令: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文件中, 不過要登錄遠(yuǎn)程服務(wù)器來執(zhí)行這條命令

  2.3 通過Ansible實現(xiàn)批量免密

  2.3.1 將需要做免密操作的機器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文件中

  補充:Linux基本命令

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

  -l 顯示文件的屬性 可用ll來表示

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

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

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

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

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

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

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


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

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

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

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

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

5.如何排查Linux服務(wù)器上的惡意發(fā)包行為

4016695