2016-07-22 18 views
0

私は、私たちの環境のいくつかの制限を克服して、パスワードなしのssh鍵用に承認されたSSHファイルを作成しようとしています。SSHと擬似端末経由のsudo

私は、ターゲット・システムへとSSHを実行し、実行するために必要としています - これは、最終的に私のansibleに行かなければならない

を「sudoのsuコマンドをして、キーでサービスアカウントのauthorized_keysを更新します」スクリプト。

私は "ssh -t user @ target" sudo su - service-user "を使用しています。これは実際に私をサービスユーザーのシェルに入れてくれました。ファイル上記でコマンドを変更

任意のヒントや代替オプション

注:?私はrequirettyは、ターゲットシステム上で設定されていないとして、「SSHの-t」オプションを使用する必要が

乾杯

。!
+0

この質問は、[Server Fault](http://serverfault.com/)でより良い回答を得るかもしれません。 –

+0

"*上記のファイル修正コマンドを渡す方法がわかりません。*"は理解できません。 – techraf

+0

もしかして、私はそれを必要とする人たちに言い換えればいいかもしれません - "サーバをターゲットにしてsudoを実行してファイルを書き込む最善の方法を誰かに教えてもらえますか" – user2074161

答えて

0

使用している輸送方法によっては、 ssh_argsを使用してください。

OpenSSHは、ControlPersistをサポートするのに十分な新しいオペレーティングシステムのためのデフォルトの接続タイプです。 (これは基本的に、Enterprise Linux 6以前のオペレーティングシステムを除くすべてのオペレーティングシステムを意味します)。

次に、あなたのansible.cfgにこのような何かを行うことができます:あなたが手動で行うのと同じ方法で接続することansible強制します

ssh_args = -t -t 

を。

その後、あなたの脚本で、または一緒に、あなたはそれがbecomeを指定する必要があるタスクとbecome_user

- name: Some task 
    debug: msg="this is a test" 
    become: true 
    become_user: someuser 
+0

まあ、手動コマンド自体は動作しません。私は試した。例。 "ssh -t user @ target" sudo su - サービスユーザ。 – user2074161

+0

複数の '-t'で試したことがありますかマンページから:"複数の-tオプションはttyの割り当てを強制しますが、sshにnoが指定されていてもローカルtty " –

0

suでは、新たに起動するのではなく、実行するコマンドに沿って通過することを可能にするオプション、-cを、持っていますシェル。

-c、--command = COMMAND
では、すでにデフォルトでこれを行いsudo、と認証している、しかし-c

でシェルに単一のコマンドを渡します。あなただけの完全コマンドのうち、suをカットすることができます

ssh -t [email protected] "sudo -u service-user <your-command>" 

はさらに一歩進むには、あなたがAnsible脚本にこれを置くことを計画していることに注意してください。もしそうなら、あなたはおそらくあまりにも多くの時間を手動でしようとするべきではありません。Ansibleはリモートでコマンドを実行することを(それは主にその主な機能の1つですが)扱い、authorized_keysファイルを変更するためにはa moduleです。

関連する問題