質問するログイン新規登録

質問編集履歴

6

軽微な修正

2018/02/05 05:39

投稿

itouri
itouri

スコア18

title CHANGED
File without changes
body CHANGED
@@ -1,7 +1,7 @@
1
1
  Goのsshサーバに関する質問です.
2
2
  Goの標準ライブラリを使ってsshサーバを実装するさいに,クライアントから受け付ける認証方法を以下のようにサーバに設定すると思います.
3
3
 
4
- ここで,質問なんですがクライアントからのconfigのAuthMethodに設定が無かったときのcallbackをサーバに設定できないでしょうか.pubkeyやpasswordの設定があった場合は通常どうりに各callbackを呼んでほしいです.
4
+ ここで,質問なんですがクライアントからのconfigのAuthMethodに設定が無かったときのcallbackをサーバに設定できないでしょうか.pubkeyやpasswordの設定があった場合は通常どうりに各callbackを呼んでほしいです.サーバはユーザの情報によって振る舞いを変えます.
5
5
  ```
6
6
  // クライアントのconfig
7
7
  config := &ssh.ClientConfig{
@@ -16,8 +16,8 @@
16
16
  ```
17
17
  // サーバのconfig
18
18
  config := &ssh.ServerConfig{
19
+ // clientからのAuthが設定されていない場合に呼んでほしい
19
20
  NoAuthCallback(conn ssh.ConnMetadata) {
20
- // clientからのAuthが設定されていない場合に呼んでほしい
21
21
  authMethod := getAuthMethodsFromDB(conn.User())
22
22
  // authMethodが認証なしでないなら通さない
23
23
  if authMethod != "none" {

5

ソースコードの修正

2018/02/05 05:38

投稿

itouri
itouri

スコア18

title CHANGED
File without changes
body CHANGED
@@ -19,16 +19,18 @@
19
19
  NoAuthCallback(conn ssh.ConnMetadata) {
20
20
  // clientからのAuthが設定されていない場合に呼んでほしい
21
21
  authMethod := getAuthMethodsFromDB(conn.User())
22
- // authMethodsに認証なしない
22
+ // authMethodが認証なしないなら通さない
23
23
  if authMethod != "none" {
24
24
  return NG
25
25
  }
26
+ return OK
26
27
  },
27
28
  PublicKeyCallback func(conn ConnMetadata, key PublicKey) (*Permissions, error) {
28
29
  // publickey認証時の処理
29
30
  authMethod := getAuthMethodsFromDB(conn.User())
30
31
  switch authMethod {
31
32
  case "none":
33
+ // DB側がnoneなら通す
32
34
  return OK
33
35
  case "pubkey":
34
36
  return 公開鍵認証の結果

4

ソースコードを詳しくした

2018/02/05 05:35

投稿

itouri
itouri

スコア18

title CHANGED
File without changes
body CHANGED
@@ -16,15 +16,25 @@
16
16
  ```
17
17
  // サーバのconfig
18
18
  config := &ssh.ServerConfig{
19
- NoAuthCallback() {
19
+ NoAuthCallback(conn ssh.ConnMetadata) {
20
20
  // clientからのAuthが設定されていない場合に呼んでほしい
21
+ authMethod := getAuthMethodsFromDB(conn.User())
22
+ // authMethodsに認証なしがない
23
+ if authMethod != "none" {
24
+ return NG
25
+ }
21
26
  },
22
- PasswordCallback: func(conn ssh.ConnMetadata, pass []byte) (*ssh.Permissions, error) {
23
- // password認証時の処理
24
- },
25
27
  PublicKeyCallback func(conn ConnMetadata, key PublicKey) (*Permissions, error) {
26
28
  // publickey認証時の処理
29
+ authMethod := getAuthMethodsFromDB(conn.User())
30
+ switch authMethod {
31
+ case "none":
32
+ return OK
33
+ case "pubkey":
34
+ return 公開鍵認証の結果
35
+ }
36
+ }
27
37
  },
28
38
  }
29
39
  ```
30
- どなたかご教授お願いします
40
+ どなたかご教授お願いします.

3

タイトルの変更

2018/02/05 05:32

投稿

itouri
itouri

スコア18

title CHANGED
@@ -1,1 +1,1 @@
1
- 認証メソッド設定ないsshクライアントへのサーバのコールバック設定方法
1
+ 認証メソッド設定ないsshクライアントへのサーバのコールバック設定方法
body CHANGED
File without changes

2

タイトルの編集

2018/02/04 15:26

投稿

itouri
itouri

スコア18

title CHANGED
@@ -1,1 +1,1 @@
1
- sshクライアントの認証メソッド設定ないのサーバのコールバック方法
1
+ 認証メソッド設定ないsshクライアントへのサーバのコールバック設定方法
body CHANGED
File without changes

1

タイトルの修正

2018/02/04 15:13

投稿

itouri
itouri

スコア18

title CHANGED
@@ -1,1 +1,1 @@
1
- sshサーバに認証メソッドないときのコールバック設定方法
1
+ sshクライアントの認証メソッド設定ないのサーバのコールバック方法
body CHANGED
File without changes