Как да влизам без парола в отдалечената си машина посредством SSH
Статията ще разясни как можете да създадете SSH конекция посредсвом ключове и да осъществявате връзката си с тяхна помощ без да се налага да пишете пароли.
CODE1
2
3
| DISTRO:
[12:20]Debian@root/home/hristevLinux 2.6.14 GNU/Linux |
Предполагам,че имате инсталирани и функциониращи ssh clien & ssh server,защото няма да се спирам как се прави
това написал съм тема погледнете я ако не ви е ясно.
CODE1
2
| Debian@root~Stabil@root~ |
-Конфигуриране на LOCAL машината (записване на IP адреса като хост).
!!Това е по избор,но според мен олеснява много работата от постоянното писане на адреси.!!
Ще можете да не пишете "ssh x.x.x.x" където X.X.X.X e IP адрес, а да напишете "ssh remote"(в този случай REMOTE е stabil) Сега записваме IP адреса на ремот машината в hosts така:
CODE
!!!!!!! ВАЖНО !!!!!!! Внимавайте използвайте >> защото ако напишете само > ще изтриете цялото съдържание на файла и ще остане само въведеното от вас. Можете също да го отворите с любимият си текстов редактор. Файлът се намира в /etc/hosts
Сега просто напишете:
CODEи вече имате конекцията към х.х.х.х IP адреса
###############################
За да работи всичко както трябва е нужно да направите следните опции за SSH в LOCAL и REMOTE машините
###############################
LOCAL CONFIG ##
###############
CODE1
2
3
4
5
6
7
| [15:25]Debian@root~/.sshIdentityFile ~/.ssh/identity <------ Махане на коментара
|
##########################
#### REMORE CONFIG
CODE1
2
3
4
5
6
7
8
9
| [15:25]Stabil@root~/.sshLoginGraceTime 25
PermitRootLogin yes
StrictModes yes
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys <------- Махане на коментара |
####################
Малко разяснения за ключовете. Kой метод и опции ще изберете ?
За тази статия ги разделям на два вида. Всичко останало е настройка на ключовете(всичко се върти около сигурността).
- с парола
- без прола
Няма да влизам в подробности кое кодиране е по-добро и как става,защото това не е идеята на статията, но все пак ще спомена.
Ключовете се генерират посредством ssh-keygen - authentication key generation, management and conversion.
-t -- Имате възможност да изберете какъв тип ключ да се генерира RSA или DSA с -t опцията.
Аз използвам RSA(Rivest, Shamir, and Adelman) това е може би най-добрият алгоритъм той се използва в PGP(Pretty Good Privacy).С него се работи лесно и има много добро управление на големи файлове с числа.
-f ПЪТ -- След като генерирате ключовете те по подразбиране се създават в ~/.ssh/id_rsa можете директно да зададете пътя с опцията -f аз сменям името на ~/.ssh/identity (това е по избор).Трябва само да изберете от /etc/ssh/ssh_config правилния
IdentityFile (както виждате по-горе аз съм избрал точно identity).
-b БИТОВЕ -- Ако искате можете да направите ключовете с различна големина.По подразбиране това е 1024 битово число като минималното е 512 а максималното 2048.Според мен 1024 е добре и едва ли ви е нужно по-голямо.
Ако оставите ключа с празна парола(когато ви поиска да създадете парола "Enter passphrase" просто натиснете ENTER)тогава няма да бъдете попитан повече за нея и ще осъществявате коненция без пароли само със ключоветеДоло съм разяснил как да използвате ключ с парола и все пак да не се налага да е пишете,а системата си го прави автоматично.
Използвал съм ключове с ПАРОЛА.
CODE1
2
3
4
5
6
7
8
9
10
11
12
13
14
| [15:23]Debian@root~/.sshGenerating public/private rsa key pair.
Enter file in which to save the key ([i]root[/i].ssh/id_rsa): [i]root[/i].ssh/identity <----Създаване на път по предпочитания
Enter passphrase (empty for no passphrase): <----Въвеждане на парола !!!
Enter same passphrase again:
Your identification has been saved in [i]root[/i].ssh/identity.
Your public key has been saved in [i]root[/i].ssh/identity.pub.
The key fingerprint is:
e2:ad:4f:37:4d:31:85:08:37 root@Debian
[15:23]Debian@root~/.sshtotal 12
-rw------- 1 root root 1743 2006-04-25 15:23 identity
-rw-r--r-- 1 root root 393 2006-04-25 15:23 identity.pub
-rw-r--r-- 1 root root 502 2006-04-25 10:05 known_hosts |
Това е съдържанието на identity който е нашия частен ключ(разбира се не са реалните ми ключове):
CODE1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
| -----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,451D7223429AD8F2
hMT8HYWo55Nfk+b4qgYHxiepuSL14hfvEoRccV6mR8DgUAbjOJpb+q1cyRpEb1Vz
Um2133YCJmqfsa7hcZgRJcrZFUbVbNN60OwX4pURwxclSSWJ03eN6WsT3RXwdlYs
o7zcAT8r5o3164QuNoSPuRkm1jkJEHCftYGze6rS1NP+TjQRKGFrAEiAyYaop63w
7BtS32Yl8W6pQ4XYE76v8ZvFwVvzAKEPy8lY3E71B4iP830BjCunBvOdFOhs21a1
kU32R23lTaEvLy8xRpXpF+jlJEwTuQsU9O9npRh0PcCDYaNqWATdbcKi94e6v2PD
sTPuasdh0/978ffdpu03h02yWV+koj1DwWmZYpGcpuBAs7wpFcTxhUSyqbiJnnvb
4juwDWakV6C6V1JeikLokztxe3QbC2McqBmrYB2j8R2Kay/ygLJUgQHVyutetSUQ
Cz/Rw4xn6USDfoowbf6o+X+f8VexuNH5bSxslJROcm8Lb3KyBzTURCkejCYGHtoR
EGw/iTsNf6T5hLl0FLzYf5rEFMkQ0+pdjwh8hbeGs8AenIDtDf+Cb6PHF0e0mRCh
2Scndkq7w9QTXWMjSFS5voE0xlhU700AZbDa/7sFGZx9gnxeEKkWbcRaJYVfR8/m
yDql+MsdaAP9IMk3LsP4aDL8/Xpaj2PsJh4urT4uYgaqtEOn5hLWMmV2wtKTot2VB
nBBNOKU4a+as5212fPK+18nYVPVo1BjdgUcuXXlNTxsWXbEphkeNuCke1Q0sfcPIT
B6xGn/z5lq4NRcx3R5RR3YcPfYsPRM4MT075gcRNa2c=
-----END RSA PRIVATE KEY-----
Това е identity.pub нашия публичен ключ:
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA8+dj6rBqS3kAHzLJF1yqgVQExygSqR5IjnQAGQubjeUwbLUm/
FIqUD2t7vCDVz9xL1UsnD0OsWMmUNTwICkVSUafL8x6EC95OQ037HOHuXLrammZvqVZq+ztzMRsOUez9EAYk/
1smV3b090lc0pDi2IELr2aAkAVVpAuTG3BTSyDGdaa46i7Ts12qx2E4lwV/
FVp8DL11BuNXhoPOqEd2JIUWyluusrV08hBjyXm8JHMwv3xoLUAYCQbKV5q58sHZBRtMUL8xNcpC0P09HnPw3n
RxT63kHBbOLnH5c7i8FYjq82s/1ahZkOpj1B5sE7UXh1FJRbuvxMm6cbK80TXVw== root@Debian |
Незнам на кой как му е удобно затова ще покажа два начина за прехвърляне на публичния ключ.
######## Първи начин просто копираме и записваме ключа към authrozized_keys без da влизаме в системата ( за мен е по удобен)
CODE1
2
3
4
| [15:24]Debian@root~/.ssh"Debian only for fat people's by Eazy-Snatch" Eazy Snatch Crew Plovdiv
Debian GNU/Linux
Password: <----- Пишете парола,за да можете да изкопирате ключа |
########
######## Втори начин (логване в системата)
CODE1
2
3
4
5
6
7
8
9
10
| [15:26]Debian@root~/.ssh"Debian only for fat people's by Eazy-Snatch" Eazy Snatch Crew Plovdiv
Debian GNU/Linux
Password: <----- Пишете парола,за да може файла да се копира
identity.pub 100% 0 0.0KB/s 00:00
[15:26]Debian@root~/.ssh"Debian only for fat people's by Eazy-Snatch" Eazy Snatch Crew Plovdiv
Debian GNU/Linux
Password: <----- Пишете парола
[15:30]Stabil@root~/.ssh |
########
След като вече сме конфигурирали двата хоста и сме съсздали ключовете нека да преминем към осъществяването на връзка. Това е връзка с ключове които имат парола.
CODE1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
| [15:26]Debian@root~/.sshOpenSSH_4.2p1 Debian-7, OpenSSL 0.9.8a 11 Oct 2005
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug1: Connecting to stabil [X.X.1X7.1X] port 22.
debug1: Connection established.
debug1: permanently_set_uid: 0/0
debug1: identity file [i]root[/i].ssh/identity type 1
debug1: Remote protocol version 2.0, remote software version OpenSSH_3.8.1p1 Debian-8.sarge.4
debug1: match: OpenSSH_3.8.1p1 Debian-8.sarge.4 pat OpenSSH_3.*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_4.2p1 Debian-7
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-cbc hmac-md5 none
debug1: kex: client->server aes128-cbc hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Host 'stabil' is known and matches the RSA host key.
debug1: Found key in [i]root[/i].ssh/known_hosts:1
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
"Debian only for fat people's by Eazy-Snatch" Eazy Snatch Crew Plovdiv
Debian GNU/Linux
debug1: Authentications that can continue: publickey,keyboard-interactive
debug1: Next authentication method: publickey
debug1: Offering public key: [i]root[/i].ssh/identity
debug1: Server accepts key: pkalg ssh-rsa blen 277
debug1: PEM_read_PrivateKey failed
debug1: read PEM private key done: type <unknown>
Enter passphrase for key '/root/.ssh/identity': <------Тук въвеждаме паролата за ключовете(ТОВА Е ПАРОЛАТА ЗА СЪМИТЕ КЛЮЧОВЕ)
debug1: read PEM private key done: type RSA
debug1: Authentication succeeded (publickey).
debug1: channel 0: new [client-session]
debug1: Entering interactive session.
debug1: Sending environment.
debug1: Sending env LANG = en_US
Last login: Tue Apr 25 14:55:08 2006 from ...
[15:23]Stabil@root~ |
Как да направим така,че не трябва да пиша паролата всеки път!?
За това се използваме ssh-agent той ще изпише вашата парола когато тя бъде поискана.
Просто трябва да запишете паролата към съмия агент ето как става това:
CODE1
2
3
4
5
6
7
| [15:31]Debian@root~/.ssh[15:31]Debian@root~/.sshEnter passphrase for [i]root[/i].ssh/identity: <--- Парола на частния ключ (въвежда се само 1-н път)
Identity added: [i]root[/i].ssh/identity ([i]root[/i].ssh/identity)
[15:31]Debian@root~/.ssh2048 e2:ad:4f:37:4d:31:85:08:37:ef [i]root[/i].ssh/identity (RSA)
[15:32]Debian@root~/.ssh |
"Debian only for fat people's by Eazy-Snatch" Eazy Snatch Crew Plovdiv
Debian GNU/Linux
Last login: Tue Apr 25 15:23:07 2006 from ...
[15:26]Stabil@root~# <--- REMOTE HOST
Eazy-Snatch
Валентин Христев