SSH, SSH komutuna bir argüman olarak komut verildiğinde tüm şifreleri görünür yapar


45

Bunu çalıştırırsam:

ssh user@server 'mysql -u user -p'

Bana MySQL şifresini sorduğunda ve yazmaya başladığımda şifre ekranda görülebilir. Bunu nasıl önleyebilirim? Oturum sshaçıp MySQL komutunu çalıştırırsam, her şey yolunda gider .


5
Bu unvanın oldukça net olduğunu düşünmüyor musunuz .. Parolalar dahil tüm metni görünür hale getirdiğini söyleyebilirsin. Ve ssh, neyi yazdığınızı bilmek için başka bir komut veya verilere karşı parola nedir?
barlop

@barlop Önerilere açığım.
user110971,

@ barlop, sunucuya ssh komutu gönderdiğinizde komutu çalıştırdığınızda işe yarar. Komutlar argüman olarak sağlandığında, ssh davranışını aynı yapmanın bir yolunu arıyorum.
user110971,

Muhtemelen gerekli değildir, ancak konsoldan tam bir kopya / yapıştırılmış bir örnek ekleyebilirsiniz, örneğin sadece ssh komutunu değil yanıtı ve izleyen mysql komut istemini gösterir. Şifreyi swisscheese olarak değiştirebilirsin, böylece siteye
koymayım

@barlop Beklediğiniz aynı mesajlar, yani ssh şifresi ve ardından MySQL şifresi istemleri
user110971 25:06 '

Yanıtlar:


100

Çalıştırmak için uzak bir komut sağlarsanız, SSH bir tty ayırmaz, bu nedenle uzak komut yankıyı devre dışı bırakamaz. Bu -tseçeneği kullanarak SSH'yi bir tty sağlaması için zorlayabilirsiniz :

ssh -t user@server 'mysql -u user -p'

Eşdeğer seçenek ( -oveya config dosyası için) RequestTTY. İnteraktif olmayan komutlar için istenmeyen etkileri olabileceğinden config içinde kullanmamaya dikkat ederdim .


15
Veya bu ana bilgisayarı her zaman bir TTY istemek üzere yapılandırmak için ~ / .ssh / config dosyasını düzenleyebilirsiniz. Bkz RequestTTYiçinde man 5 ssh_config.
CVn

7
@ MichaelKjörling (ve Toby): belki "-t" eklemenin yan etkileri olduğu için sadece etkileşimli kullanım için ayrılması gerektiğine dair bir miktar uyarı ekleyin. Bu yan etkilerin bazılarına iyi bir bakış için: unix.stackexchange.com/a/122624/27616 (StephaneChazelas'dan)
Olivier Dulac

Kabul Edildi - Uzak komutuna göre (Host tarafından değil) ayarları (bunun gibi) ekleyemeyeceğiniz için utanç vericem diyecektim.
Toby Speight

28

Şifreyi korumalı bir seçenek dosyasında saklamak

Uzak bilgisayarın güvenliğine [*] güveniyorsanız , şifreyi, her biri aracılığıyla iletişim kurmanıza veya yazmaya gerek kalmadan, kılavuzun Son Kullanıcı Parola Güvenliği Yönergeleri bölümünde önerildiği şekilde uygun şekilde korunan bir seçenek dosyasında saklayabilirsiniz. sshsaati.

Özellikle .my.cnf, ana dizininizdeki dosyanın [istemci] bölümüne bir satır ekleyebilirsiniz :

[client]
password=your_pass

Elbette, örneğin dosya erişim modunu 400 veya 600 olarak ayarlayarak bu dosyanın kendinizden başkası tarafından erişilebilir olmasını engellemelisiniz.

chmod 600 ~/.my.cnf

Sonra gibi bir şey kullanabilirsiniz

ssh user@server 'mysql -u user110971 --defaults-file=/home/user110971/mysql-opts'

user110971hesabınızın kullanıcı adı nerede .


Ssh'yi sahte tty ( ssh -t) ataması için zorlamak

Bu sorun, her komut gönderdiğinizde gerçekleşir sshve varsayılan olarak sshbir takma tty atamadığı için girdiyi girmeniz gerekir .

Tty tahsisini şu seçenekle zorlayabilirsiniz: -t(gerekirse birden fazla bile):

-t

Sözde tty tahsisini zorla. Bu, uzak bir makinede isteğe bağlı ekran tabanlı programları yürütmek için kullanılabilir; bu, örneğin menü hizmetlerini uygularken çok yararlı olabilir. Birden fazla -tseçenek, ssh'nin yerel tty'si olmasa bile, tty tahsisini zorlar.

Eğer okuduğunuz gibi bu Debian yazı (Jul_11_2008) hakkında sudo, bu aşklar tekrarlanmasını Eski bir konudur:

ssh user@server "sudo ls"  
password: password  

Ve şifre size gösterilir

Çözüm, ssh'yi -t bayrağıyla sahte bir tty ayırmaya zorlamaktır:

ssh -t user@server sudo ls

Not:

[*] Şifreyi yalnızca sizin tarafınızdan erişilebilen bir dosyada bırakıp, çalışan istemcideroot kullanmaya güveniyorsanız.
İşletim sistemini değiştiren uzaktaki bilgisayarı yeniden başlatmak veya HDD'yi kaldırmak mümkün ise, bilgisayar tamamen güvenli sayılmaz ... ancak bu durumda veritabanının kendisi güvenli olmaz.


1
"-t" eklemenin yan etkileri olduğu için yalnızca etkileşimli kullanım için ayrılması gerektiğine dair bir miktar uyarı ekleyin. Bu yan etkilerin bazılarına iyi bir bakış için: unix.stackexchange.com/a/122624/27616 (StephaneChazelas'dan)
Olivier Dulac

3

Proc fs için "hidepid" takma seçeneği de değerlidir. Komut satırlarınızı diğer kullanıcılar için işlem listesinde görünmez kılar. fstab örneği:

proc /proc proc hidepid=1 0 0
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.