GNU/Linux >> Znalost Linux >  >> Linux

SSH - nastavení proměnných env při každém připojení - sdílený hostitel

Řešení 1:

Za předpokladu, že máte UsePAM yes v /etc/ssh/sshd_config a za předpokladu, že chcete tyto proměnné prostředí nastavit pro každého uživatele, můžete si nechat nastavit proměnné prostředí pam. Pokud máte proměnné prostředí definované v /etc/gitenv můžete přidat tento řádek do /etc/pam.d/sshd

auth required pam_env.so envfile=/etc/gitenv

Nebo kontrolou tohoto souboru můžete zjistit, že se již používá pam_env.so a že již existuje soubor, do kterého můžete přidávat věci. Buďte opatrní a ujistěte se, že jste před ukončením ssh relace důkladně otestovali své změny, protože když si budete zahrávat s pam, můžete si úplně zlomit schopnost přihlásit se k vašemu serveru, pokud nebudete opatrní.

Řešení 2:

Nastavuji nějakou proměnnou prostředí pro svá připojení SSH pomocí ~/.ssh/environment . Soubor může obsahovat proměnnou ve tvaru VAR=value , není třeba je explicitně exportovat.

Tento uživatelský konfigurační soubor je však ve výchozím nastavení procesem serveru SSH ignorován, pokud není možnost PermitUserEnvironment nastavena na yes. Proto se musíte ujistit, že jste upravili /etc/sshd_config na serveru SSH, abyste přidali nebo aktualizovali tento parametr:

PermitUserEnvironment yes

Musíte znovu načíst konfiguraci serveru SSH. Na RHEL nebo Suse Linux to uděláte (jako root)

/sbin/service sshd reload

(Pokud to nefunguje, možná nahraďte sshd ssh)

Na Ubuntu (pomocí upstart) ano

sudo reload ssh

Na jakémkoli jiném Linuxu to můžete zkusit (jako root)

/etc/init.d/sshd reload

(Nahraďte sshd za ssh nebo openssh nebo cokoli, co by odpovídalo init skriptu serveru SSH)

Řešení 3:

Už nemám sdíleného hostitele, takže nemohu zkontrolovat, zda jsou navrhovaná řešení platná. To zůstane přijatou odpovědí, protože to fungovalo podle mě, když jsem položil otázku. Ostatní odpovědi by také mohly fungovat. Nechal jsem o tom rozhodnout komunitu pomocí hlasů pro.

OK. Řešením je, že na sdíleném hostiteli Godaddy neexistuje žádné řešení. Zkoušel jsem všechno, ale nic nefunguje, tak jsem se rozhodl, že zůstanu u ~/.ssh/authorized_keys:

command="~/connect.sh" ssh-rsa AAAAB3NzaC...

V souboru ~/connect.sh:

#!/bin/bash
if [ -f "${HOME}/.env_profile" ]; then
        source ~/.env_profile
fi;

if [ "x${SSH_ORIGINAL_COMMAND}x" == "xx" ]; then
        $SHELL --login
else
        eval "${SSH_ORIGINAL_COMMAND}"
fi;

A v ~/.env_profile:

export PATH=$PATH:$HOME/bin:$HOME/git/libexec/git-core
export LD_LIBRARY_PATH=$HOME/git/lib
export GIT_EXEC_PATH=~/git/libexec/git-core
export GIT_TEMPLATE_DIR=~/git/share/git-core/templates

Takže musím zkopírovat příkaz="..." do každého klíče rsa v autorizovaných_klíčích. Toto je duplikace kódu, ale nemyslím si, že na bohulibých sdílených hostitelích existuje jiné řešení.


Linux
  1. Omezit přihlášení SSH na konkrétní IP nebo hostitele

  2. Jak nastavit klíče SSH na Debianu

  3. ^M na konci každého řádku ve vim

  1. Jak ukončím připojení SSH?

  2. SSH:připojení k hostiteli localhost port 22:Připojení odmítnuto

  3. přidání hesla do .ssh/config

  1. Jak nastavit klíče SSH

  2. Ssh-agent se nenastavuje (ssh_auth_sock, Ssh_agent_pid Env Vars Not Set)?

  3. Jak nastavit klíče SSH na Ubuntu 18.04