8 Aralık 2019 Pazar

~/.ssh/config Dosyası - Kullanıcı Konfigürasyon Dosyası

Giriş
Bu dosya şu dizinindedir.
~/.ssh/config
Açıklaması şöyle. Yani kendi bilgisayarımızda ssh komutunu çalıştırınca bu dosya okunur ve buradaki konfigürasyon verisi kullanılır.
ssh obtains configuration data from the following sources in the following order:
 1. command-line options
 2. user's configuration file (~/.ssh/config)
 3. system-wide configuration file (/etc/ssh/ssh_config)
Dosya Hakları
Dosya kullanıcı için okunabilir olmalı. Açıklaması şöyle
Ssh requires the file ~/.ssh/config to be readable only by the user it affects and noone else. File-permission of 664 or 644 is default on most systems (rw-rw-r-- or rw-r--r--).
Örnek
Dosya hakkı şöyle olabilir. Burada dosyanın grup yazma hakkı var.
-rw-rw-r--  1 dev dev   75 Oct 26 20:13 config
Burada ilginç bir problem şöyle. Bir kullanıcı şöyle yapmış
After creating a new user (test) with the same primary group (dev) as the existing user (dev), I am no longer able to git clone when logged in as dev
ssh ise bu durumu istemiyor ve hata veriyor. Açıklaması şöyle. Yani dosya group write ise, grupta tek bir kişi olmalı diyor.
If the file is group-writable, the group in question must have exactly one member, namely the file's owner.
(Zero-member groups are typically used by setgid  binaries, and are unlikely to be suitable.)
Çözümü ise sadece kullanıcıya rw hakkı vermek. Açıklaması şöyle.
Googling around seems to suggest that I can fix the ssh problem by running chmod 600 ~/.ssh/config
Sebebi ise şöyle. Yani güvenlik açığı olmaması
SSH is explicitly made to check the file permissions, and to complain loudly, if another user could modify the configuration because that would be huge gaping security hole. It probably checks the number of users in the group instead of complaining about group-writability as such, since many systems have per-user groups, and umasks allowing write access for the group and false positives there would just annoy people unnecessarily.
Parametrelerin Tekrar Tanımlanması
Açıklaması şöyle
For each parameter, the first obtained value will be used. The configuration files contain sections separated by Host specifications, and that section is only applied for hosts that match one of the patterns given in the specification. ...
Since the first obtained value for each parameter is used, more host-specific declarations should be given near the beginning of the file, and general defaults at the end.
Örnek
Elimizde şöyle bir kod olsun
ServerAliveInterval 1

Host work
  ConnectTimeout 2

Host *
  ConnectTimeout 3
  ServerAliveInterval 4
  ServerAliveCountMax 5

Host work
  ServerAliveCountMax 6
  ServerAliveInterval 7
Açıklaması şöyle
- For all hosts, ServerAliveInterval 1 is always used, 4 and 7 are never used, not even for work.
- ConnectTimeout is 2 for work, for other hosts it's 3.
- For all hosts, the ServerAliveCountMax is 5, the work-specific value 6 is never used, not even for work.

Host Alanı
alias tanımlamak içindir. Eğer bu dosyada alias tanımlamak istemiyorsak daha kolay bir yolu .bashrc dosyasında kendi alias'larımızı tanımlamak. Şöyle yaparız
alias go='ssh url1'
alias go2='ssh url2'
Örnek
Uzaktaki bir bilgisayara alias ve ayar tanımlamak istersek şöyle yaparız.
Host myhost
  Port 12345
  User my_user
  HostName 123.123.123.1
Şöyle yaparız.
ssh myhost
Örnek
Eğer şifre girmek istemezsek şöyle yaparız.
Host 1
  Hostname bastion.example.me
  User said
  Port 22
  IdentityFile ~/.ssh/id_rsa
  ForwardAgent yes
Örnek
Şöyle yaparız
Host meh
    HostName meh.example.com
    User admin
    Port 1234
    IdentityFile ~/.ssh/id_rsa
Bağlanmak için şöyle yaparız.
ssh meh
Host/Port Alanı
Şöyle yaparız.
Host myremotehost
  Hostname      555.555.555.555
  User          user
  Port          20002
  IdentityFile  /Users/myuser/.ssh/vpsssh
Böylece ssh -p ... şeklinde kullanmak zorunda kalmayız.

Host/ControlPersist Alanı
Açıklaması şöyle.
When used in conjunction with ControlMaster, specifies that the master connection should remain open in the background (waiting for future client connections) after the initial client connection has been closed. If set to no, then the master connection will not be placed into the background, and will close as soon as the initial client connection is closed. If set to yes or 0, then the master connection will remain in the background indefinitely (until killed or closed via a mechanism such as the "ssh -O exist"). If set to a time in seconds, or a time in any of the formats documented in sshd_config(5), then the backgrounded master connection will automatically terminate after it has remained idle (with no client connections) for the specified time.
Şöyle yaparız.
Host host
    User root
    ControlMaster auto
    ControlPath /tmp/ssh-control-%C
    ControlPersist 30   # or some safe timeout
Host/HashKnownHosts Alanı
Örnek
~/.ssh/known_hosts dosyasında bağlanılan hostiçin hash üretilmesini engellemek için şöyle yaparız
Host *
  HashKnownHosts no
Host/KnownHosts Alanı
Açıklaması şöyle
SSH has a KnownHostsCommand configuration parameter which allows you to specify a command that outputs host key lines in the same format as the known hosts file. This command will be called after SSH has read the known hosts files and allows you to add additional entries on the fly, based on the information of the current connection attempt.
Örnek
Şöyle yaparız
Host 10.0.0.*
  KnownHostsCommand /usr/bin/env printf "%H ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILUT12.."

Host/ProxyJump Alanı
Örnek
Şöyle yaparız. Böylece "conclusions.initech.biz" hariç diğer tüm "*.initech.biz" bağlantıları bir proxy üzerinden gider.
Host *.initech.biz !conclusions.initech.biz
    ProxyJump conclusions.initech.biz
IdentityFile Alanı
Eğer şifre girmek istemezsek kullanılır.
Örnek
İdentity dosyasını belirtmek için şöyle yaparız.
Host            somename
Hostname        192.168.1.3
User            user
IdentityFile    /home/user/ssh/keys/server1key
Örnek
Kullanılacak şifre yöntemini belirtmek için şöyle yaparız.
Host 10.255.252.1
    Cipher 3des-cbc
    KexAlgorithms +diffie-hellman-group1-sha1
    User foo
Host *
    Port 9922
X11
Açıklaması şöyle.
disabling X11 forwarding does not prevent users from forwarding X11 traffic, as users can always install their own forwarders.

Hiç yorum yok:

Yorum Gönder