OpenSSH adalah “remote management tool” yang dapat mengakses dan menjalankan perintah di komputer lain yang berbasis unix/linux, misalnya server. OpenSSH adalah tool konektivitas primer untuk login secara remote dengan protokol SSH.
Penggunaan
Penggunaan OpenSSH terbilang simpel.
Konfigurasi SSH Klien
Konfigurasi ssh client dapat dilakukan dengan mengedit file konfigurasi ssh client yang berada di ~/.ssh/config. File konfigurasi ssh client ini dapat berisi beberapa konfigurasi seperti:
- Hostname
- Port
- User
- IdentityFile
Secara default, file konfigurasi ini tidak ada sehingga perlu dibuat terlebih dahulu menggunakan text editor.
1
2
3
4
5
|
Host server1
Hostname 10.10.10.11
Port 22
User root
IdentityFile ~/.ssh/id_rsa
|
Penjelasan
server1 adalah nama dari host server yang akan diakses.
Hostname adalah alamat IP dari host server yang akan diakses. Bisa berupa alamat domain juga.
Port adalah port dari host server yang akan diakses. Jika port yang digunakan adalah port default (22), maka tidak perlu ditulis.
User adalah username dari host server yang akan diakses.
IdentityFile adalah file kunci yang digunakan untuk mengakses host server. Opsi ini tidak perlu ditulis jika hanya ada satu file kunci yang digunakan.
Penggunaan
Setelah melakukan konfigurasi ssh client, maka tidak perlu lagi menuliskan username, host, dan port saat melakukan login ke host server. cukup dengan ssh dan nama server yang telah dibuat di file konfigurasi ssh client.
1
|
[script47@localhost ~]$ ssh server1
|
Kunci SSH (SSH Key)
Kunci SSH adalah kunci yang digunakan untuk mengakses host server. Kunci SSH terdiri dari kunci publik dan kunci privat. Kunci publik digunakan untuk mengenkripsi koneksi SSH, sedangkan kunci privat digunakan untuk mendekripsi koneksi SSH.
Cara kerja kunci SSH
- Klien mengirimkan kunci publik ke server.
- Server menyimpan kunci publik ke dalam file
authorized_keys yang berada di ~/.ssh/authorized_keys.
- Klien login ke server menggunakan kunci privat yang sesuai dengan kunci publik yang telah disimpan di server untuk mendekripsi koneksi SSH.
- Koneksi SSH berhasil.
Membuat kunci SSH
Untuk membuat kunci SSH, gunakan perintah ssh-keygen dengan opsi -t untuk menentukan tipe kunci yang akan dibuat. Opsi -t dapat diisi dengan rsa atau ed25519. Opsi -t tidak perlu ditulis jika hanya ingin membuat kunci dengan tipe rsa.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
[script47@localhost ~]$ ssh-keygen -t ed25519
Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/script47/.ssh/id_ed25519):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/script47/.ssh/id_ed25519.
Your public key has been saved in /home/script47/.ssh/id_ed25519.pub.
The key fingerprint is:
SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx script47@localhost
The key's randomart image is:
+--[ED25519 256]--+
| .. ++@*=o |
| .oo O.O o |
| +oo % .|
| ... + B |
| o.E S. = |
| +oo . . |
| . o=. . |
| . .=o.. |
| ..+=o |
+----[SHA256]-----+
[script47@localhost ~]$
|
Tips
Gunakan opsi -C comment untuk memberikan identitas pada kunci SSH yang akan dibuat. Opsi -C dapat diisi dengan nama user yang akan mengakses host server. Hal ini bersifat opsional, karena jika tidak diisi, maka akan diisi dengan nama user dan hostname yang sedang login saat membuat kunci SSH.
Mengunggah kunci SSH ke server
Untuk mengunggah kunci SSH ke server, gunakan perintah ssh-copy-id dengan opsi -i untuk menentukan file kunci yang akan diunggah ke server. Opsi -i tidak perlu ditulis jika hanya ada satu file kunci yang digunakan.
1
|
[script47@localhost ~]$ ssh-copy-id -i ~/.ssh/id_ed25519.pub [username]@[host]
|
for your info
- Dengan menggunakan kunci SSH, maka metode login menggunakan password dapat dinonaktifkan. Sehingga kerentanan terhadap serangan brute force login dapat diminimalisir.
- Sangat direkomendasikan untuk menggunakan passphrase daripada membuat kunci SSH tanpa passphrase alias kosong. Tujuan passphrase pada kunci SSH adalah untuk mengamankan kunci privat dari akses yang tidak sah. Dengan kata lain sebagai bentuk perlindungan double authentication saat kunci private tersebut tercuri dari lokal komputer.
Konfigurasi SSH Server
Konfigurasi SSH server dapat dilakukan dengan mengedit file konfigurasi SSH server yang berada di /etc/ssh/sshd_config. File konfigurasi SSH server ini berisi konfigurasi yang digunakan untuk mengatur SSH server.
Tips
Mengubah konfigurasi SSH Server pada lokal komputer tidak akan berdampak pada server tujuan, jika ingin membuat perubahan pada server tujuan, maka perubahan harus dilakukan pada file konfigurasi SSH server yang berada di server tujuan dengan cara login ke server tujuan terlebih dahulu.
Peringatan
Harap hati-hati karena perubahan yang dilakukan pada file konfigurasi SSH server bisa saja mengakibatkan server tidak dapat diakses melalui SSH. Berikut contoh isi dari konfigurasi SSH server:
1
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
|
[script47@localhost ~]$ ssh [username]@[host]
[username]@[host]'s password:
Last login: Wed May 5 15:00:00 2021 from
[username]@[host] ~]$ cat /etc/ssh/sshd_config
# This is the sshd server system-wide configuration file. See
# sshd_config(5) for more information.
# This sshd was compiled with PATH=/usr/bin:/bin:/usr/sbin:/sbin
# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented. Uncommented options override the
# default value.
Include /etc/ssh/sshd_config.d/*.conf
#Port 22
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::
#HostKey /etc/ssh/ssh_host_rsa_key
#HostKey /etc/ssh/ssh_host_ecdsa_key
#HostKey /etc/ssh/ssh_host_ed25519_key
# Ciphers and keying
#RekeyLimit default none
# Logging
#SyslogFacility AUTH
#LogLevel INFO
# Authentication:
#LoginGraceTime 2m
PermitRootLogin yes
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10
#PubkeyAuthentication yes
# Expect .ssh/authorized_keys2 to be disregarded by default in future.
#AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2
#AuthorizedPrincipalsFile none
#AuthorizedKeysCommand none
#AuthorizedKeysCommandUser nobody
# For this to work you will also need host keys in /etc/ssh/ssh_known_hosts
#HostbasedAuthentication no
# Change to yes if you don't trust ~/.ssh/known_hosts for
# HostbasedAuthentication
#IgnoreUserKnownHosts no
# Don't read the user's ~/.rhosts and ~/.shosts files
#IgnoreRhosts yes
# To disable tunneled clear text passwords, change to no here!
PasswordAuthentication yes
PermitEmptyPasswords no
# Change to yes to enable challenge-response passwords (beware issues with
# some PAM modules and threads)
ChallengeResponseAuthentication no
# Kerberos options
#KerberosAuthentication no
#KerberosOrLocalPasswd yes
#KerberosTicketCleanup yes
#KerberosGetAFSToken no
# GSSAPI options
#GSSAPIAuthentication no
#GSSAPICleanupCredentials yes
#GSSAPIStrictAcceptorCheck yes
#GSSAPIKeyExchange no
# Set this to 'yes' to enable PAM authentication, account processing,
# and session processing. If this is enabled, PAM authentication will
# be allowed through the ChallengeResponseAuthentication and
# PasswordAuthentication. Depending on your PAM configuration,
# PAM authentication via ChallengeResponseAuthentication may bypass
# the setting of "PermitRootLogin without-password".
# If you just want the PAM account and session checks to run without
# PAM authentication, then enable this but set PasswordAuthentication
# and ChallengeResponseAuthentication to 'no'.
UsePAM yes
#AllowAgentForwarding yes
AllowTcpForwarding yes
#GatewayPorts no
X11Forwarding yes
#X11DisplayOffset 10
#X11UseLocalhost yes
#PermitTTY yes
PrintMotd no
#PrintLastLog yes
#TCPKeepAlive yes
#PermitUserEnvironment no
#Compression delayed
#ClientAliveInterval 0
#ClientAliveCountMax 3
#UseDNS no
#PidFile /var/run/sshd.pid
#MaxStartups 10:30:100
#PermitTunnel no
#ChrootDirectory none
#VersionAddendum none
# no default banner path
#Banner none
# Allow client to pass locale environment variables
AcceptEnv LANG LC_*
# override default of no subsystems
Subsystem sftp /usr/lib/openssh/sftp-server
# Example of overriding settings on a per-user basis
#Match User anoncvs
# X11Forwarding no
# AllowTcpForwarding no
# PermitTTY no
# ForceCommand cvs server
|
Mengubah Port SSH Server
Port SSH server dapat diubah dengan mengubah nilai dari konfigurasi Port pada file konfigurasi SSH server. Nilai default dari konfigurasi Port adalah 22. Jika ingin mengubah port SSH server, maka nilai dari konfigurasi Port harus diubah menjadi port yang diinginkan.
1
|
sed -i 's/#Port 22/Port 2222/g' /etc/ssh/sshd_config
|
Penjelasan
sed adalah perintah untuk mengubah file.
-i adalah opsi untuk mengubah file secara langsung.
s/#Port 22/Port 2222/g adalah perintah untuk mengubah nilai dari konfigurasi Port menjadi 2222.
/etc/ssh/sshd_config adalah lokasi file konfigurasi SSH server.
Catatan
- Jika tidak familiar dengan perintah
sed, maka dapat menggunakan teks editor untuk mengubah port secara manual.
- Agar perubahan dapat diterapkan, maka perlu melakukan restart service SSH dengan
systemctl restart sshd.
Peringatan
Harap diperhatikan bahwa port yang digunakan untuk SSH server tidak boleh sama dengan port yang sudah digunakan. Untuk mengetahui port yang sudah digunakan oleh program lainnya, dapat menggunakan perintah netstat -tulpn.
Penggunaan
Setelah mengubah port SSH server tujuan, maka perlu menambahkan -p pada perintah ssh untuk mengakses SSH server.
1
|
[username]@[host] ~]$ ssh -p 2222 [username]@[host]
|
Bisa juga dengan cara mengubah konfigurasi port SSH client pada file ~/.ssh/config. Dengan begitu, tidak perlu menambahkan -p pada perintah ssh untuk mengakses server.
1
2
3
4
5
|
Host server1
Hostname 10.10.10.11
Port 2222
User root
IdentityFile ~/.ssh/id_rsa
|
Menonaktifkan Akses SSH dengan Password
Untuk menonaktifkan akses SSH dengan password, maka perlu mengubah nilai dari konfigurasi PasswordAuthentication pada file konfigurasi SSH server menjadi no.
1
|
sed -i 's/PasswordAuthentication yes/PasswordAuthentication no/g' /etc/ssh/sshd_config
|
Peringatan
Jangan mencoba menonaktifkan akses SSH dengan password jika belum melakukan konfigurasi login menggunakan kunci SSH (SSH key) karena dapat mengakibatkan server tidak dapat diakses.
Referensi Tambahan